2010-03-26 89 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;