目前,我使用strip_tags,從我處理的字符串中刪除所有的html標籤。然而,我注意到最近,它加入的話,它包含在標籤去除 即刪除html標籤
$str = "<li>Hello</li><li>world</li>";
$result = strip_tags($str);
echo $result;
(prints HelloWorld)
你怎麼能解決這個得到什麼?
目前,我使用strip_tags,從我處理的字符串中刪除所有的html標籤。然而,我注意到最近,它加入的話,它包含在標籤去除 即刪除html標籤
$str = "<li>Hello</li><li>world</li>";
$result = strip_tags($str);
echo $result;
(prints HelloWorld)
你怎麼能解決這個得到什麼?
更好它不會刪除<>,但逃脫他們。
這一切都取決於剝離HTML標籤後你想要的輸出。例如:
如果你想<li>
標籤中的項目普通列表進行轉換,我建議你使用str_replace
與*
和</li>
與\n
更換<li>
。
strip_tags
的建議是在沒有任何其他轉換的情況下襬脫HTML標籤。
本質上,我想要一個字符串,所有的html標籤被刪除而不會搞亂原文(連接詞等)。 – Thomas
這將用空格替換所有html標記(實際上,不檢查它是否爲html),然後將可能的雙空白替換爲單個空格並刪除開始或結束的空格。
$str = preg_replace("/<.*?>/", " ", $str);
$str = trim(str_replace(" ", " ", $str));
http://www.codinghorror.com/blog/2009/11/parsing-html-the-cthulhu-way.html –
發現以下問題,基本解決我的問題 Problem using strip_tags in php
由於FOT幫助反正
你可以玩這正則表達式模式是最好的,什麼來代替:)
// ------------------------------------
function strip_html_tags($string) {
$string = str_replace("\r", ' ', $string);
$string = str_replace("\n", ' ', $string);
$string = str_replace("\t", ' ', $string);
## $string = str_replace("<li>', "\n* ", $string);
## $pattern = "/<.*?>/";
$pattern = '/<[^>]*>/';
$string= preg_replace ($pattern, ' ', $string);
$string= trim(preg_replace('/ {2,}/', ' ', $string));
return $string;
}
// ------------------------------------
您還可以添加特殊替換項,如:'<li>'
到"\n* "
...或whateve r :)
echo strip_tags(str_replace('>', '> ', $string));
這應該做你正在尋找的所有情況下。
從你的代碼中我發現在Hello Word和你不希望strip_tags函數爲你添加它之間沒有初始空間,所以爲了使strip_tags函數能夠生成你想要的東西,我添加了第一個列表標籤之後的空格,結果是Hello world。
您可以複製並粘貼此代碼並運行以查看差異。
$str = "<li>Hello</li> <li>world</li>";
$result = strip_tags($str);
echo $result;
//Expected result after Execution is Hello world
你爲什麼把它變成一個社區維基? –
,因爲我收到了一條消息,表示我可以這樣做,會造成傷害嗎?或者我做錯了什麼? –
沒有傷害,但是現在這個答案你不會得到聲望點。 –
嗯,你的字符串中沒有空格,爲什麼PHP應該插入它們(以及where)?認爲它是簡單的替換功能。 –
嗨費利克斯。我明白你的意思。事情是,這是非常普遍的事情。假設您需要從文檔中提取標籤,在數據庫中插入純文本以進行全文搜索。您如何確保內容清晰且格式正確? – Thomas
這就像雞和雞蛋一樣,你想刪除HTML標籤,但是保持原文的格式,很難保持雙方的平衡。如果你想迎合全文搜索,有很多方式... – ajreal