首先,如果标签中不清楚,我会在 PHP 中执行此操作 - 但这可能并不重要。
我有这个代码:
$inputStr = strip_tags($inputStr);
$inputStr = preg_replace("/[^a-zA-Z\s]/", " ", $inputStr);
这似乎完美地删除了所有 HTML 标签以及几乎所有特殊和非字母字符。一个问题是,由于某种原因,它不会过滤掉回车符/换行符(只是组合)。
如果我添加这一行:
$inputStr = preg_replace("/\s+/", " ", $inputStr);
然而,最后效果很好。谁能告诉我:
- 为什么第一个 preg_replace 没有过滤掉 CR/LF?
- 第二个 preg_repalce 实际上在做什么?我基本上理解第一个,但第二个让我感到困惑 - 它有效,但我不知道为什么。
- 我可以将它们合并成一行吗?
最佳答案
- 您告诉它删除除字母和空格之外的所有内容。换行符是空格,因此不会被删除。您可以使用
\h
而不是\s
来仅排除水平空白。 - 它的意思只是“将一个或多个空白字符 (
\s+
) 的每个序列替换为一个空格。” preg_replace("/[^A-Za-z]+/", "", ...)
可能可以。
关于php - 正则表达式 - 删除所有非字母数字字符 CRLF 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7549258/