我已經想出瞭如何在保留重音的同時過濾出非字母數字字符,但是我怎樣才能保留標點符號和常見的鍵盤字符!%$#(& @ *( )[]:;/- + _ =。,php正則表達式只保留字母數字拉丁字符,標點符號和html
我還需要保留字符串中的所有html標記和BR換行符。這可能嗎 ?
$caption = preg_replace('/[^\p{Latin}\d\s\p{P}]/u', '', $caption);
我已經想出瞭如何在保留重音的同時過濾出非字母數字字符,但是我怎樣才能保留標點符號和常見的鍵盤字符!%$#(& @ *( )[]:;/- + _ =。,php正則表達式只保留字母數字拉丁字符,標點符號和html
我還需要保留字符串中的所有html標記和BR換行符。這可能嗎 ?
$caption = preg_replace('/[^\p{Latin}\d\s\p{P}]/u', '', $caption);
這應該有效。它保留所有特殊鍵盤字符和全部 html標籤
並且只是針對其他項目。
正則表達式對標記和特殊字符使用原子分組。
結果應該很快。
絃樂器和分隔的形式'~..~'
:
'~(?>(?><(?:(?:(?:(script|style|object|embed|applet|noframes|noscript|noembed)(?:\s+(?>"[\S\s]*?"|\'[\S\s]*?\'|(?:(?!/>)[^>])?)+)?\s*>)[\S\s]*?</\1\s*(?=>))|(?:/?[\w:]+\s*/?)|(?:[\w:]+\s+(?:"[\S\s]*?"|\'[\S\s]*?\'|[^>]?)+\s*/?)|\?[\S\s]*?\?|(?:!(?:(?:DOCTYPE[\S\s]*?)|(?:\[CDATA\[[\S\s]*?\]\])|(?:--[\S\s]*?--)|(?:ATTLIST[\S\s]*?)|(?:ENTITY[\S\s]*?)|(?:ELEMENT[\S\s]*?))))>|[!%$#&@*()\[\]^:;/+_=.,\~-])(*SKIP)(*FAIL))|[^\p{Latin}\d\s\p{P}]~'
原料形態:
(?>(?><(?:(?:(?:(script|style|object|embed|applet|noframes|noscript|noembed)(?:\s+(?>"[\S\s]*?"|'[\S\s]*?'|(?:(?!/>)[^>])?)+)?\s*>)[\S\s]*?</\1\s*(?=>))|(?:/?[\w:]+\s*/?)|(?:[\w:]+\s+(?:"[\S\s]*?"|'[\S\s]*?'|[^>]?)+\s*/?)|\?[\S\s]*?\?|(?:!(?:(?:DOCTYPE[\S\s]*?)|(?:\[CDATA\[[\S\s]*?\]\])|(?:--[\S\s]*?--)|(?:ATTLIST[\S\s]*?)|(?:ENTITY[\S\s]*?)|(?:ELEMENT[\S\s]*?))))>|[!%$#&@*()\[\]^:;/+_=.,~-])(*SKIP)(*FAIL))|[^\p{Latin}\d\s\p{P}]
也許像'<\/?.+?>(* SKIP)(* FAIL)| [^ \ p {拉丁語} \ d \ s \ p {P}]'這並不是真的驗證它是一個HTML元素,不過更多的是你有一個'<' and a '>'與之間的東西。 – chris85