Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.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:除了引号之间的字符外,如何从字符串中删除任何字符或整个字符串?_Php_Regex - Fatal编程技术网

Php:除了引号之间的字符外,如何从字符串中删除任何字符或整个字符串?

Php:除了引号之间的字符外,如何从字符串中删除任何字符或整个字符串?,php,regex,Php,Regex,非常相似,但我不想删除空格,而是删除任何字符。例如,我试图从字符串中删除新行(0x10或0x13字符),但如果某个内容在“”或“”附近,则必须保持不变。我正在使用php。您可以通过替换以下表达式来实现这一点: ("[^"]*"|'[^']*')|[\r\n]+ 第一个捕获组的内容:$1 其工作原理是捕获引号并将其替换为自己的引号,或者匹配要删除的内容并将其替换为空字符串 如果还要处理反斜杠转义,可以在同一替换中使用以下表达式: ("(?:[^"\\]+|\\.)*"|'(?:[^'\\]+|\

非常相似,但我不想删除空格,而是删除任何字符。例如,我试图从字符串中删除新行(0x10或0x13字符),但如果某个内容在“”或“”附近,则必须保持不变。我正在使用php。

您可以通过替换以下表达式来实现这一点:

("[^"]*"|'[^']*')|[\r\n]+
第一个捕获组的内容:
$1

其工作原理是捕获引号并将其替换为自己的引号,或者匹配要删除的内容并将其替换为空字符串

如果还要处理反斜杠转义,可以在同一替换中使用以下表达式:

("(?:[^"\\]+|\\.)*"|'(?:[^'\\]+|\\.)*')|[\r\n]+

虽然实现您想要的regexp并不难,但值得注意的是,字符串(由单引号或双引号表示)可能包含转义字符,这可能会破坏您的regex(取决于转义机制)。例如:
“他说\“你好\”!“
你能给出一个示例字符串吗?从中删除@:$a=”sdfsdf@dsf@ "sdfdsf@sdhereThe@一定没碰过!!”sdfsf@sdf';您可能希望
((?:[^“\\]+\124\\)*“\”(?:[^“\\]+\ 124\\)*“\\\”。[\ r\n]+
,也考虑引号外的转义字符。在我的回答中,我假设引号外没有转义。