Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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 preg_match_all不';不匹配转义引号_Php_Regex - Fatal编程技术网

PHP preg_match_all不';不匹配转义引号

PHP preg_match_all不';不匹配转义引号,php,regex,Php,Regex,此代码: <?php $string = "\"single quote"; preg_match_all("/\"/im", $string, $m); $all_quotes = count($m); preg_match_all("/\\\"/im", $string, $m); $escaped_quotes = count($m); echo "<pre>"; echo "<b>string:&l

此代码:

<?php
    $string = "\"single quote";
    preg_match_all("/\"/im", $string, $m);
    $all_quotes = count($m);
    preg_match_all("/\\\"/im", $string, $m);
    $escaped_quotes = count($m);

    echo "<pre>";
     echo "<b>string:</b> $string<br>";
     echo "<b>all quotes:</b> $all_quotes<br>";
     echo "<b>escaped quotes:</b> $escaped_quotes<br>";
    echo "</pre>";
?>

应该匹配所有引号,然后匹配所有转义引号,并回显结果。 出于某种原因,对于字符串
“single quote
,它同时回显一个quote和一个转义的quote,但是模式
/\\\”/im
在同一字符串中执行时不匹配任何内容。

编辑:

好的,首先,您将从
preg\u match\u all
获取计数作为返回值。您现在执行此操作的方式将始终向您显示
1
,因为
preg\u match\u all
返回数组(在您的示例中有一个元素)

正如Wiktor Stribiżew所说,您也需要调整正则表达式

$string = "\\\"single quote";

我不能百分之百确定我是否理解你的问题,但我会尽力回答

您可能希望在
$string
变量中看到
\“
,对吗

但事实并非如此。PHP将在保存字符串之前删除该反斜杠。这只是对PHP的一个提示,提示您希望获取文本
,并且您没有尝试在此处结束字符串

如果您希望(出于任何原因)获得
\“
,则必须使用以下代码:


不,$string非常好,应该是
“单引号
@WearyAdventurer,那么您希望从该代码中得到什么呢?是否应该显示一个引号和零个转义引号?问题已解决。谢谢你的正则表达式很好,这不是真的
preg\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\;
将只匹配
,而不匹配
\”
“\”
不包含反斜杠。检查。可能的副本
$string = "\\\"single quote";