1

我如何使用 str_ireplace 或其他函数来删除任何字符,但不能删除 HTML 中常用的字母、数字或符号: " ' ; : . - + =等。我还想删除 /n、空格、制表符等。

我需要那个文本,来自做(“textContent”)。IE10和Chrome中的innerHTML,无论哪个浏览器执行它,php变量的大小都相同。因此,我需要在文本和字符中删除罕见或不同的相同编码。

我试试这个,但它对我不起作用:

        $textForMatch=iconv(mb_detect_encoding($text, mb_detect_order(), true), "UTF-8", $text);
        $textoForMatc = str_replace(array('\s', "\n", "\t", "\r"), '', $textoForMatch);

$text 包含函数的结果(“textContent”)。innerHTML,我想删除字符为 é³..

4

1 回答 1

3

最简单的选择是简单地将 preg_replace 与白名单一起使用。即使用列出您想要保留的内容的模式,并替换不在该列表中的任何内容:

$input = 'The quick brown 123 fox said "�é³". Man was I surprised';
$stripped = preg_replace('/[^-\w:";:+=\.\']/', '', $input);
$output = 'Thequickbrownfoxsaid"".ManwasIsurprised';

正则表达式解释

/       - start regex
[^      - Begin inverted character class, match NON-matching characters
-       - litteral character
\w      - Match word characters. Equivalent to A-Za-z0-9_
:";:+=  - litteral characters
\.      - escaped period (because a dot has meaning in a regex)
\'      - escaped quote (because the string is in single quotes)
]       - end character class
/       - end of regex

因此,这将删除任何不是单词、数字或正则表达式中列出的特定字符的内容。

于 2013-01-19T17:26:54.267 回答