2017-07-14 105 views
0

我有一個完整的從不同的來源和langagues RSS提要條目的標題和描述的數據庫......PHP的MySQL只保留字ANS標點符號沒有標籤,新線等

這個問題是不是白色的空間,但要保持文字和標點符號。

我想只保留單詞,像'「,標點符號;。!?() 還刪除選項卡,雙空格,換行等

我有一個部分工作的解決方案,但在我的數據庫我仍然看到新線路段,新的空行...... 我也刪除標籤,因爲我想只保留文本。

$onlywords = strip_tags(html_entity_decode($insUrlsOk['rss_summary'])); //html_entity_decode because some times it's &lt; instead of < 
$onlywords = trim($onlywords); // works partially -->> I still have new lines paragraphs, empty new lines 
$onlywords = preg_replace('/[^\w\s]+/u',' ',$onlywords); //keeps ONLY words from any langages but also remove punctuation 
$onlywords = str_replace(' ',' ',$onlywords); 

我認爲'/[^\w\s]+/u'需要更精緻一點我預浸模式...

我也對其他解決方案持開放態度,只要它很短並且保持在幾行代碼內(沒有額外的插件安裝在服務器中)。

謝謝。

+0

的可能的複製[移除多個空格](https://stackoverflow.com/questions/2326125/remove-multiple-whitespaces) – mickmackusa

回答

1

trim()只刪除字符串開頭和結尾的空格,所以不會刪除段落。

換行符和製表符包含在\s中,因此preg_replace()保留它們。使用preg_replace代替str_replace把空白的所有序列到單個空間:

$onlywords = preg_replace('/\s{2,}/', ' ', $onlywords); 
+0

你好謝謝。有效 ;)。我也修改了我的正則表達式模式爲'$ onlywords = preg_replace('/ [^ \ w。,%!?] +/u','',$ onlywords);'。 '[^'...是一個「任何東西,但...」,而'\ w'是單詞。 •我在'\ w'之後加了''''','... –