P粉3230507802023-09-03 16:42:37
沒有合理的方法來保存像您發布的內容一樣損壞的文檔,但假設您將文本中的>
和類似字元替換為其相關實體,例如: > ;
,您可以將要接受的文件放入適當的庫中,例如DomDocument 將處理剩下的事情。
$input = <<<_E_ < div class='test' >1 > 0 is < b >true</ b> and apples >>> bananas< / div > _E_; $input = preg_replace([ '#<\s+#', '#</\s+#' ], [ '<', '</' ], $input); $d = new DomDocument(); $d->loadHTML($input, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); var_dump($d->saveHTML());
輸出:
string(80) "<div class="test">1 > 0 is <b>true</b> and apples >>> bananas</div>"
P粉0644484492023-09-03 11:17:47
這個正規表示式也有效:
它將 HTML 標籤中的有效部分分為四個部分,並用其替換其餘部分(空格)。
/(<)\s*(\/?)\s*([^<>]*\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);