當我們從一個頁面上抓取/讀取數據時,經常會出現不需要HTML標記的純文本數據的需求。或者在自己的程序中需要過濾掉HTML標記以確保輸出的安全性和數據的準確性。那麼在這種情況下,我們就可以使用PHP的strip_tags函數,它可以移除字符串中全部或部分的HTML標籤。
一、strip_tags函數的基本語法
mixed strip_tags ( string $string [, string $allowable_tags ] )
在上面的函數語法中:
- 第一個參數 string 是必需的,表示輸入的字符串,該項不能省略。
- 第二個參數 allowable_tags 是可選的,它定義了允許出現的標籤。如果別了這個參數,則該函數會移除所有的標籤。
- 函數返回一個處理後的字符串,如果出錯返回FALSE。
二、strip_tags函數的使用方法
strip_tags函數非常簡單易用,下面是一個例子:
$str = "帶 Html 標籤的字符串"; $strtags = strip_tags($str); // 移除 $str 中的所有標記以下輸出結果: echo $strtags;
輸出結果是一個不帶HTML標籤的純文本字符串。
三、移除指定的HTML標籤
除了移除所有的HTML標記外,如果你希望只移除某些指定的HTML標籤或屬性,可以在函數的第二個可選參數中添加這些標籤,例如:
$str = "這是一個有些HTML標記的文字。
"; $strtags = strip_tags($str, ''); echo $strtags;
這個例子中,\
和\標籤被允許放行,而\被移除了。
四、保留某些HTML標籤和其中的內容
相比較之下,有時候我們是希望保留某些HTML標籤和其中的內容,該怎麼做呢?可以採用strip_tags函數的逆操作,把我們需要的標記或者內容替換成標記,具體實現如下:
function stripTagsContent($text, $tags = '', $invert = FALSE) {preg_match_all('//si', trim($tags), $tags);
$tags = array_unique($tags[1]);if (is_array($tags) && count($tags) > 0) {
if ($invert == FALSE) {
$text = preg_replace('/]*)?>/si', '', $text);
}else {
$text = preg_replace('/]*)?>)([\s\S]*?)>/si', '', $text);
}
} elseif ($invert == FALSE) {
$text = preg_replace('/]*)?>)(.*?)>/si', '', $text);
}return $text;
}$str = '
這是一個有些HTML標記的文字。
原創文章,作者:THLM,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/131612.html