修剪  用PHP

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

  • @Deele我并不总是测试我的代码,但是当我这样做时,我会在生产中进行测试. (33认同)
  • 也可以通过键入`"\ xC2\xA0"来生成. (4认同)
  • 由于 UTF-8 的工作方式,该解决方案是错误的。例如,它在 `" abà"` 处中断。 (2认同)

Lot*_*tes 25

$str = "1 $nbsp;     2     3   4";
$new_str = str_replace(" ", '', $str);
Run Code Online (Sandbox Code Playgroud)

  • PHP代码在服务器上解释,而不是客户端.浏览器永远不会看到它. (4认同)

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

  • 注意:此解决方案可能会损坏字符串开头/结尾的其他字符,因为 trim() 将单独查看每个字节!例如 `echo trim(''test´', " \t\n\r\0\x0B\xC2\xA0");` 将通过删除第一个字节来破坏第一个字符! (3认同)

Ken*_*nny 11

$str = " abc ";

echo trim($str, "\xC2\xA0"); //abc
Run Code Online (Sandbox Code Playgroud)

  • 注意:此解决方案可能会损坏字符串开头/结尾的其他字符,因为 trim() 将分别查找“\xC2”和“\xA0”!例如 `echo trim(''test´', "\xC2\xA0");` 将通过删除第一个字节来破坏第一个字符! (6认同)
  • 一般来说,如果答案包含对代码的意图的解释,以及为什么在不引入其他代码的情况下解决问题,则答案会更有帮助. (2认同)

Ada*_*han 5

回答有点晚,但希望可以帮助别人。从 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