php - 正则表达式 - 删除所有非字母数字字符 CRLF 问题

标签 php regex

首先,如果标签中不清楚,我会在 PHP 中执行此操作 - 但这可能并不重要。

我有这个代码:

$inputStr = strip_tags($inputStr);
$inputStr = preg_replace("/[^a-zA-Z\s]/", " ", $inputStr);

这似乎完美地删除了所有 HTML 标签以及几乎所有特殊和非字母字符。一个问题是,由于某种原因,它不会过滤掉回车符/换行符(只是组合)。

如果我添加这一行:

$inputStr = preg_replace("/\s+/", " ", $inputStr);

然而,最后效果很好。谁能告诉我:

  1. 为什么第一个 preg_replace 没有过滤掉 CR/LF?
  2. 第二个 preg_repalce 实际上在做什么?我基本上理解第一个,但第二个让我感到困惑 - 它有效,但我不知道为什么。
  3. 我可以将它们合并成一行吗?

最佳答案

  1. 您告诉它删除除字母和空格之外的所有内容。换行符是空格,因此不会被删除。您可以使用 \h 而不是 \s 来仅排除水平空白。
  2. 它的意思只是“将一个或多个空白字符 (\s+) 的每个序列替换为一个空格。”
  3. preg_replace("/[^A-Za-z]+/", "", ...) 可能可以。

关于php - 正则表达式 - 删除所有非字母数字字符 CRLF 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7549258/

相关文章:

php - 在 php 中识别时态

php - MySQL更新,使用PDO跳过空白字段

javascript - 提取与特定模式匹配的所有值

php - 选择与日期选择器中相同的日期

phpunit 测试资源 laravel 5.5 返回集合而不是 json

php - mySQL 多重连接

sql - 在 Hive 中寻找在列中具有特殊字符的行

regex - 使用内容定界符作为文件名在PowerShell中拆分文本

javascript - 精确匹配边界未知的 10 个数字?

java - 在字符串中搜索 URL