首頁 >後端開發 >PHP問題 >php怎麼去除html並得到純文本

php怎麼去除html並得到純文本

PHPz
PHPz原創
2023-04-10 09:45:301656瀏覽

隨著網路的不斷發展和使用者需求的提高,越來越多的網站需要提供文字編輯功能,使用者可以在頁面上新增、編輯或刪除內容。這些內容在保存到資料庫或在頁面上展示時,通常需要經過一些處理,使它們成為純文字格式。

對於PHP程式設計師來說,去除HTML的過程也就是把一段富文本變成純文字格式的過程是重要的技能。那麼,如何使用PHP去除HTML並得到純文字呢?下面本文將就這個主題給出一些實用方法。

用strip_tags()函數去除HTML標籤

PHP中有一個strip_tags()函數,可以移除HTML標籤,得到純文字格式的字串。函數格式如下:

string strip_tags ( string $str [, string $allowable_tags ] )

第一個參數是要被處理的字串,第二個參數則是允許保留的標籤元素名稱。如果沒有指定第二個參數,則會移除所有HTML標籤。

例如,以下程式碼將會去掉HTML文字中所有的標籤元素,並輸出結果:

<?php
    $html = &#39;<div><p>Hello, world!</p></div>';
    $text = strip_tags($html);
    echo $text; // 输出结果:Hello, world!
?>

可以將上述方法進行拓展,支援保留指定標籤元素。

<?php
    $html = &#39;<div><p>Hello, world!</p><a href="www.google.com">Google</a></div>';
    $text = strip_tags($html, '<p>');
    echo $text; // 输出结果:<p>Hello, world!</p>
?>

使用正規表示式移除HTML標籤

除了 strip_tags() 函數外,使用正規表示式也是常見的方法。正規表示式可以符合HTML標籤,並移除它們。以下是一段範例程式碼:

<?php
    $html = &#39;<div><p>Hello, world!</p></div>';
    $text = preg_replace('/<[^>]*>/', '', $html);
    echo $text; // 输出结果:Hello, world!
?>

使用preg_replace()函數和正規表示式"/<1*>/",移除了HTML標籤。這個正規表示式可以匹配任何以“<”開始,“>”結束的字串,括號內的“^>”表示匹配除了“>”以外的所有字元。

實作更精細的HTML標籤移除

上述兩種方法雖然簡單有效,但會完全移除HTML標籤,包含一些格式標記,如粗體、斜體、底線等。如果不想完全移除這些標籤,而是只想保留它們的樣式,那該怎麼辦呢?

這時我們可以利用PHP DOM擴展,來實現更精細的HTML標籤去除。 PHP DOM擴展是一個功能強大且靈活的擴展,可以解析HTML、XML文檔,然後對它們進行操作,例如查詢、插入、刪除節點等。

以下是一段範例程式碼,利用PHP DOM擴充去除了HTML標籤:

<?php
    $html = &#39;<div><p><strong>Hello, </strong><i>world</i>!</p></div>';
    
    $dom = new DOMDocument();
    $dom->loadHTML($html);

    $body = $dom->getElementsByTagName('body')->item(0);
    $text = $body->textContent;

    echo $text; // 输出结果:Hello, world!
?>

先建立一個DOMDocument對象,然後將要處理的HTML字串傳遞給它的loadHTML()方法。接著,使用getElementsByTagName('body')->item(0)方法來取得HTML中的body元素,然後使用textContent屬性,取得body元素下所有純文字內容。最後,將得到的結果輸出到螢幕上。

總結

本文介紹了三種以PHP為基礎的方法來移除HTML標記,得到純文字。第一種是簡單的strip_tags()函數,可以實現最基礎的HTML標記去除,第二種方法則利用正則表達式的優勢,對HTML標記進行匹配去除,第三種方法則使用PHP DOM擴展,可完全控制HTML體系,更精細的控制輸出結果。大家可以依照自己的需求,彈性選擇使用。


  1. >
#

以上是php怎麼去除html並得到純文本的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn