"應該是"",我有一些HTML,這些HTML都被標籤內的空格弄亂了,並且希望使其再次有效-例如:1>0istrueandapples>>>bananas< /div>應轉換為有效的HTML,並且在渲染時,預計會產生:1>0is"> 移除無效HTML標籤之間的空格的正規表示式 - 例如"< / b >"應該是"</b>"-PHP中文網路問答
移除無效HTML標籤之間的空格的正規表示式 - 例如"< / b >"應該是""
P粉884667022
P粉884667022 2023-09-02 19:56:28
0
2
437

我有一些 HTML,這些 HTML 都被標籤內的空格弄亂了,並且希望使其再次有效 - 例如:

< div class='test' >1 > 0 is < b >true and apples >>> bananas< / div >

應轉換為有效的 HTML,並且在渲染時,預計會產生:

1 > 0 is true and apples >>> bananas

文本中任何> 或>< 前面/後面有空格的文本應保持不變- 例如,/code> 前面/後面有空格的文本應保持不變- 例如, ;1 > 0 要保留,而不是壓縮到1>0

我意識到這可能需要幾個正規表示式,這很好

我有幾件事:

<\s?\/\s* 這將部分修復 到< code>

,但我正在努力解決其餘問題< /p>

例如,我可以採取嚴厲的方法,但這也會破壞標籤文字部分內的程式碼,而不是標籤名稱本身

P粉884667022
P粉884667022

全部回覆 (2)
P粉323050780

沒有合理的方法來保存像您發布的內容一樣損壞的文檔,但假設您將文本中的>和類似字元替換為其相關實體,例如:> ;,您可以將要接受的文件放入適當的庫中,例如DomDocument將處理剩下的事情。

$input = <<<_E_ < div class='test' >1 > 0 is < b >true and apples >>> bananas< / div > _E_; $input = preg_replace([ '#<\s+#', '#loadHTML($input, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); var_dump($d->saveHTML());

輸出:

string(80) "
1 > 0 is true and apples >>> bananas
"
    P粉064448449

    這個正規表示式也有效:

    它將 HTML 標籤中的有效部分分為四個部分,並用其替換其餘部分(空格)。

    Regex101 示範

    /(]*\S)\s*(>)/g

    • #( - 捕捉起始尖括號(第 1 節)
    • \s*- 符合任何空格
    • (\/?)- 捕捉可選的反斜線(第 2 部分)
    • \s*- 符合反斜線後的任何空格
    • ([^]*\S)- 捕捉標籤內的內容,不帶尾隨空格(第 3 節)
    • \s*- 符合內容後面和右尖括號之前的空格
    • (>)- 捕捉右尖括號(第 4 節)

    const reg = /(<)\s*(\/?)\s*([^<>]*\S)\s*(>)/g const str = "< div class='test' >1 > 0 is < b >true< / b > and apples >>> bananas< / div >" const newStr = str.replace(reg, ""); console.log(newStr);
      最新下載
      更多>
      網站特效
      網站源碼
      網站素材
      前端模板
      關於我們 免責聲明 Sitemap
      PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!