我有一個很大的問題。我必須剪下一個由HTML代碼組成的字符串。但我不知道該怎麼做,使HTML代碼不會得到傷害:如何限制字符串不傷害HTML代碼,在PHP?
<p>this is a <strong>HTML</strong> code which is too long, and can be even UNICODE characters</p>
與mb_substr():
<p>this is a <strong>HTM
是有辦法解決它呢?
我有一個很大的問題。我必須剪下一個由HTML代碼組成的字符串。但我不知道該怎麼做,使HTML代碼不會得到傷害:如何限制字符串不傷害HTML代碼,在PHP?
<p>this is a <strong>HTML</strong> code which is too long, and can be even UNICODE characters</p>
與mb_substr():
<p>this is a <strong>HTM
是有辦法解決它呢?
你必須解析你的字符串。我會用正則表達式來做一個分割,然後剪切字符串(計算沒有標籤的字符),然後再添加closetags。
嘗試後10個字符這個切斷,只適用於第一次出現:
$cut_after = 10;
$string_complete = "<b>Peter Griffin</b>";
$string_to_cut = filter_var($string_complete, FILTER_SANITIZE_STRING);
var_dump($string_complete);
//string '<b>Peter Griffin</b>' (length=20)
$string_chopped_head = substr($string_to_cut, 0, $cut_after);
$string_chopped_tail = substr($string_to_cut, $cut_after, (strlen($string_to_cut)-$cut_after));
$string_head_before_cut = substr($string_complete, 0, stripos($string_complete, $string_chopped_head));
$string_tail_after_cut = substr($string_complete, stripos($string_complete, $string_chopped_tail)+strlen($string_chopped_tail));
$final_string = $string_head_before_cut . $string_chopped_head . $string_tail_after_cut;
var_dump($final_string);
//string '<b>Peter Grif</b>' (length=17)
過濾器使用FILTER_SANITIZE_STRING
使用切割前字符串'strip_tags'看到http://in2.php.net/strip_tags和使用後'substr' –
它不能以確定的方式來完成。你可以使用像'simple_html_dom'這樣的庫迭代地剪切並檢查更短的字符串是否仍然是有效的HTML。除此之外,你應該首先限制字符串長度,而不是稍後縮短。 :) –
函數'strip_tags'不能使用,因爲他需要「HTML代碼不會被損壞」。 –