spo*_*nap 23 php string replace
我有这样一句话.
1 2 3 4
Run Code Online (Sandbox Code Playgroud)
如您所见,在1到2个文本之间,还有额外的空格.我希望输出只有一个空格.所以我的输出将是1 2 3 4
如果我使用trim,它只能删除空格,但不是
如何使用PHP trim来获得这样的输出?
Tob*_*nke 60
在php.net上找到这个,效果很好:
$myHTML = " abc";
$converted = strtr($myHTML, array_flip(get_html_translation_table(HTML_ENTITIES, ENT_QUOTES)));
trim($converted, chr(0xC2).chr(0xA0));
Run Code Online (Sandbox Code Playgroud)
资料来源:http://php.net/manual/en/function.trim.php#98812
Lot*_*tes 25
$str = "1 $nbsp; 2 3 4";
$new_str = str_replace(" ", '', $str);
Run Code Online (Sandbox Code Playgroud)
Cha*_*oix 19
对于那些想要修剪的人来说,这是一个更具包容性的答案:
$str = trim($str, " \t\n\r\0\x0B\xC2\xA0");
Run Code Online (Sandbox Code Playgroud)
相同的修剪处理html实体:
$str = trim(html_entity_decode($str), " \t\n\r\0\x0B\xC2\xA0");
Run Code Online (Sandbox Code Playgroud)
这里的html_entity_decode和trim交互概述在PHP文档中:http: //php.net/manual/en/function.html-entity-decode.php#refsect1-function.html-entity-decode-notes
Ken*_*nny 11
$str = " abc ";
echo trim($str, "\xC2\xA0"); //abc
Run Code Online (Sandbox Code Playgroud)
回答有点晚,但希望可以帮助别人。从 html 中提取内容最重要的是在 php 中使用utf8_decode()。然后所有其他字符串操作变得轻而易举。甚至可以通过直接从浏览器复制粘贴字符到php代码中来替换外来字符。以下函数替换
为空格。然后,所有额外的空格都使用preg_replace()
. 最后删除前导和尾随空格。
function clean($str)
{
$str = utf8_decode($str);
$str = str_replace(" ", " ", $str);
$str = preg_replace('/\s+/', ' ',$str);
$str = trim($str);
return $str;
}
$html = "1 $nbsp; 2 3 4";
$output = clean($html);
echo $output;
Run Code Online (Sandbox Code Playgroud)
1 2 3 4