2010-03-26 92 views
13

我有这样一个句子。修剪 用PHP

1 $nbsp;     2     3   4 

正如你所看到的,在1 2和3之间的文本中,有额外的空格。我希望它们之间只有一个空格的输出。所以我的输出将是1 2 3 4

如果我使用修剪,它只能删除空白,但不是那 我怎样才能使用PHP修剪得到这样的输出?

回答

18
$str = "1 $nbsp;     2     3   4"; 
$new_str = str_replace(" ", '', $str); 
+2

PHP代码被解释为服务器,而不是在客户端。浏览器从来没有看到它。 – 2014-05-28 07:24:24

1

,如果你的字符串实际上有“ ”,

$str="1       2     3   4"; 
$s = str_replace("  ","",$str); 
print $s; 
1
echo str_replace (" ", "", "1       2     3   4"); 

只记得你需要回声出str_replace函数的结果,你ALO不需要担心白色空格的浏览器只会显示一个空白区域。

49

在php.net找到这一点,伟大的工程:

$myHTML = " abc"; 
$converted = strtr($myHTML, array_flip(get_html_translation_table(HTML_ENTITIES, ENT_QUOTES))); 
trim($converted, chr(0xC2).chr(0xA0)); 

来源:http://php.net/manual/en/function.trim.php#98812

+0

你有没有注意到遗失的遗物? – Deele 2013-03-04 10:46:07

+26

@Deele我并不总是测试我的代码,但是当我这样做时,我会在生产中进行测试。 – 2013-03-04 13:32:19

+1

优秀的托比亚斯,非常感谢... – 2013-08-22 13:32:20

11

对于那些一个更具包容性的回答谁不想只是做一个微调:

$str = trim($str, " \t\n\r\0\x0B\xC2\xA0"); 

同修剪处理  html实体:

$str = trim(html_entity_decode($str), " \t\n\r\0\x0B\xC2\xA0"); 

这html_entity_decode和修剪相互作用在这里的PHP文件中概述: http://php.net/manual/en/function.html-entity-decode.php#refsect1-function.html-entity-decode-notes

+0

当它只是一个6个字符的字符串时,它不会去掉 。 – 2015-02-09 18:56:30

+0

@ArtemRussakovskii:它不应该去掉 ,因为这是一个html实体,不适合修剪。如果您希望在字符串中首先使用html_entity_decode修剪掉额外的 ,那么这是合适的解决方案。 – Chaoix 2015-02-25 17:17:58

5
$str = " abc "; 

echo trim($str, "\xC2\xA0"); //abc 
+2

通常情况下,如果答案包含对代码意图做什么的解释,以及为什么解决问题而不介绍其他问题,答案会更有帮助。 – 2015-04-28 06:13:28

0

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