首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 刪除 HTML 標籤並清理空白字符的實用函數

     編輯:PHP 相關知識

在內容處理、摘要生成、數據入庫前,常需同時「去標籤」與「去多餘空白」。封裝一個 deletehtml() 函數可一站式解決。

完整函數代碼

<?php
/**
 * 移除 HTML 標籤並清理空白字符
 * @param string $str 原始字符串
 * @return string 處理後的純文本
 */
function deletehtml($str) {
    $str = trim($str);                       // 1. 去首尾空白
    $str = strip_tags($str, "<p>");        // 2. 去標籤,保留 <p>(可按需調整)
    $str = preg_replace("/\t/", "", $str);   // 3. 去制表符
    $str = preg_replace("/\r\n/", "", $str); // 4. 去 Windows 換行
    $str = preg_replace("/\r/", "", $str);   // 5. 去 Mac 換行
    $str = preg_replace("/\n/", "", $str);   // 6. 去 Linux 換行
    $str = preg_replace("/ /", "", $str);    // 7. 去普通空格
    $str = preg_replace("/ /", "", $str); // 8. 去 HTML 空格實體
    return trim($str);                       // 9. 最終修飾
}
?>

關鍵點說明

  • strip_tags($str, '<p>') 第二參數為允許保留的標籤白名單,可傳字符串或數組(如 ['<p>', '<br>']),若不需保留任意標籤可省略或傳 ''。
  • 正則中 /\t/、/\r\n/ 等需用雙引號或轉義,單引號下 \t 不會被解析為制表符。
  • 建議將多個 preg_replace 合併為一條正則:preg_replace('/[\s\x{00a0}]+/u', '', $str)(需 u 修飾符支持 Unicode),效率更高。

優化版(推薦生產環境)

<?php
function clean_html_text($str, $allowed_tags = '') {
    $str = trim($str);
    $str = strip_tags($str, $allowed_tags);
    // 一次性移除所有空白字符(含空格、換行、制表、不換行空格  )
    $str = preg_replace('/[\s\x{00a0}]+/u', '', $str);
    return trim($str);
}

// 使用示例
echo clean_html_text("<p>Hello <b>World</b></p>\n\t", '<p>'); // 輸出:HelloWorld(保留 p 標籤但內容無空格)
?>

提示:若需保留單詞間空格(如生成摘要),請將正則改為 preg_replace('/\s+/', ' ', $str) 僅合併連續空白為單個空格。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved