我需要从字符串中删除所有标签并使其没有空格。
我有字符串
"<span class="left_corner"> </span><span class="text">Adv</span><span class="right_corner"> </span>"
使用 strip_tags 后我得到字符串
" Adv "
使用修剪功能我不能删除空格。
JSON 字符串看起来像“\u00a0...\u00a0”。
请帮我删除这个空格。
这个问题的解决方案
$str = trim($str, chr(0xC2).chr(0xA0))
您应该使用preg_replace()
, 使其以多字节安全的方式。
$str = preg_replace('/^[\s\x00]+|[\s\x00]+$/u', '', $str);
备注:
\u00a0
,因为 也\s
匹配 Unicode 不间断空格/u
修饰符 (PCRE_UTF8) 告诉 PCRE 将主题作为 UTF8 字符串处理\x00
匹配空字节字符以模仿默认trim()
函数行为接受的@Андрей-Сердюкtrim()
答案将与多字节字符串混淆。
例子:
// This works:
echo trim(' Hello ', ' '.chr(0xC2).chr(0xA0));
// > "Hello"
// And this doesn't work:
echo trim(' Solidarietà ', ' '.chr(0xC2).chr(0xA0));
// > "Solidariet?" -- invalid UTF8 character sequense
// This works for both single-byte and multi-byte sequenses:
echo preg_replace('/^[\s\x00]+|[\s\x00]+$/u', '', ' Hello ');
// > "Hello"
echo preg_replace('/^[\s\x00]+|[\s\x00]+$/u', '', ' Solidarietà ');
// > "Solidarietà"
怎么样:
$string = '" Adv "';
$noSpace = preg_replace('/\s/', '', $string);
?
$str = '<span class="left_corner"> </span><span class="text">Adv</span><span class="right_corner"> </span>';
$rgx = '#(<[^>]+>)|(\s+)#';
$cleaned_str = preg_replace( $rgx, '' , $str );
echo '['. $cleaned_str .']';