我需要删除字符串中的所有标记,使其不带空格。我有绳子
"<span class="left_corner"> </span><span class="text">Adv</span><span class="right_corner"> </span>"
在使用strip_tags之后,我得到了string
" Adv "
使用trim函数我不能删除空格。JSON字符串看起来像“\u00a0...\u00a0”。请帮我删除这些空格。
nkhmeac61#
此问题的解决方案$str = trim($str, chr(0xC2).chr(0xA0))
$str = trim($str, chr(0xC2).chr(0xA0))
ygya80vv2#
您应该使用preg_replace(),以使其具有多字节安全性。
preg_replace()
$str = preg_replace('/^[\s\x00]+|[\s\x00]+$/u', '', $str);
\u00a0
\s
/u
\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à"
hvvq6cgz3#
怎么样:
$string = '" Adv "'; $noSpace = preg_replace('/\s/', '', $string);
?http://php.net/manual/en/function.preg-replace.php
ar7v8xwq4#
我使用公认的解决方案 * 多年 *,我一直是错误的。如果我能在2022年找到这个解决方案,其他人也能找到,所以请将公认的解决方案改为@e1v一直是正确的解决方案。"你不该这么做"
echo trim('Au delà', ' '.chr(0xC2).chr(0xA0));
因为它会破坏UTF-8编码:Au请注意,一种“现代”(PHP 7)的编写方式可以是:
echo trim('Au delà', " \u{a0}");//This is WRONG, don't do it!
就我个人而言,当我必须处理字符串中的 * 不可断空格 *(Unicode 00 A0,UTF8 C2 A0)时,我会用 * 常规空格 *(Unicode 0020,UTF8 20)替换尾部/结尾空格,然后修剪字符串。如下所示:
echo trim(preg_replace('/^\s+|\s+$/u', ' ', "Au delà\u{a0}"));
(我会发表评论或只是投票的答案,但我不能)。
aoyhnmkz5#
$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 .']';
5条答案
按热度按时间nkhmeac61#
此问题的解决方案
$str = trim($str, chr(0xC2).chr(0xA0))
ygya80vv2#
您应该使用
preg_replace()
,以使其具有多字节安全性。\u00a0
,因为\s
也匹配Unicode不间断空格/u
修饰符(PCRE_UTF8)告诉PCRE将主题作为UTF8字符串处理\x00
匹配空字节字符以模拟默认trim()
函数行为接受@Анд р ей-Се р д к
trim()
答案将与多字节字符串混淆。示例:
hvvq6cgz3#
怎么样:
?
http://php.net/manual/en/function.preg-replace.php
ar7v8xwq4#
我使用公认的解决方案 * 多年 *,我一直是错误的。如果我能在2022年找到这个解决方案,其他人也能找到,所以请将公认的解决方案改为@e1v一直是正确的解决方案。
"你不该这么做"
因为它会破坏UTF-8编码:
Au
请注意,一种“现代”(PHP 7)的编写方式可以是:
就我个人而言,当我必须处理字符串中的 * 不可断空格 *(Unicode 00 A0,UTF8 C2 A0)时,我会用 * 常规空格 *(Unicode 0020,UTF8 20)替换尾部/结尾空格,然后修剪字符串。如下所示:
(我会发表评论或只是投票的答案,但我不能)。
aoyhnmkz5#