在 PHP 開發中,strip_tags() 是常用的去除 HTML 標籤函數,但許多開發者發現它處理後的字串仍會殘留大量空白字元(換行、空格、Tab 等),影響後續的字串截取或顯示。本文將分享一個簡單有效的解決方法,並說明其中的原理。
假設資料庫欄位 $newsRs['content'] 存放如下 HTML 內容:
<p> 張志斌張志斌張志斌張志斌張志斌張志 </p> <p> <br /> </p> <p> alsdkjf;laskjd;flasj; </p> <p> asdjfasjd;lkafsj;lfdkj </p> <p> aksdjfl;ak </p>
直接使用 strip_tags() 處理後,結果會變成:
張志斌張志斌張志斌張志斌張志斌張志 alsdkjf;laskjd;flasj; asdjfasjd;lkafsj;lfdkj aksdjfl;ak
可以看到,原本的標籤被替換成空白,導致文字之間出現多餘的空格與換行,這通常不是我們想要的純文字內容。
關鍵在於第二步:使用 preg_replace() 配合 \s 模式,一次清除所有空白字元(包含空格、換行、Tab 等)。
$subject = strip_tags($newsRs['content']); // 1. 先去除 HTML 標籤 $pattern = '/\s/'; // 2. 定義匹配所有空白字元的正則 $content = preg_replace($pattern, '', $subject); // 3. 將空白替換為空字串 $seodata['articledescription'] = mb_substr($content, 0, 80); // 4. 安全截取 80 個中文字
張志斌張志斌張志斌張志斌張志斌張志alsdkjf;laskjd;flasj;asdjfasjd;lkafsj;lfdkjaksdjfl;ak
這樣就能得到乾淨、連續的純文字,非常適合用於 SEO 摘要、搜尋預覽或 API 回傳資料。
\s:匹配任意空白字元(空格、\t、\n、\r 等)\S:匹配任意非空白字元(大小寫相反)記住大小寫區分,這在撰寫複雜正則時非常實用。
調試正則表達式時,以下線上工具能大幅提升效率:
更多 PHP 相關技巧,可參考本站專題:
希望本文能幫助你解決 strip_tags() 留下的空白困擾,讓資料處理更乾淨俐落!