Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 正则表达式-删除所有非字母数字字符CRLF问题_Php_Regex - Fatal编程技术网

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

Php 正则表达式-删除所有非字母数字字符CRLF问题,php,regex,Php,Regex,首先,如果从标签上看不清楚,我是用PHP来做的——但这可能没什么关系 我有以下代码: $inputStr = strip_tags($inputStr); $inputStr = preg_replace("/[^a-zA-Z\s]/", " ", $inputStr); 它似乎完美地删除了所有HTML标记和几乎所有的特殊字符和非字母字符。一个问题是,出于某种原因,它没有过滤出carraige return/line feed(只是组合) 如果我添加这一行: $inputStr = preg_

首先,如果从标签上看不清楚,我是用PHP来做的——但这可能没什么关系

我有以下代码:

$inputStr = strip_tags($inputStr);
$inputStr = preg_replace("/[^a-zA-Z\s]/", " ", $inputStr);
它似乎完美地删除了所有HTML标记和几乎所有的特殊字符和非字母字符。一个问题是,出于某种原因,它没有过滤出carraige return/line feed(只是组合)

如果我添加这一行:

$inputStr = preg_replace("/\s+/", " ", $inputStr);
然而,最终,它的效果非常好。谁能告诉我:

  • 为什么第一个preg_不替换过滤掉CR/LFs
  • 这第二个preg_repalce实际上在做什么?我大部分理解第一个,但第二个让我困惑——它有效,但我不知道为什么
  • 我可以把它们组合成一行吗
  • 你让它删除除字母和空格以外的所有内容。换行符是空白,因此不会被删除。您可以使用
    \h
    而不是
    \s
    仅排除水平空白
  • 它的意思是“用一个空格替换一个或多个空格字符(
    \s+
    )的每个序列。”
  • preg_replace(“/[^A-Za-z]+/”、“,…)
    可以
  • \s
    匹配空格,如
    \n
  • 它将所有空白字符替换为空格
  • 你可以把它变成一行不可读的,但可能不是一个正则表达式

  • 第一个正则表达式是删除所有非字母或空格的字符。CRLF是空白,因此不会被过滤掉

    第二种方法是用空格字符替换空格。本质上,它将空格序列压缩为一个空格(因为量词是贪婪的)


    我建议从第一个正则表达式中删除
    \s
    ,看看是否有效。

    谢谢。总有一天我会有足够的时间阅读一本好的正则表达式教程并进行练习,哈哈。我认为这是非常需要的。我去试试,以后再告诉你。