(Cake)PHP正则表达式中的双引号不匹配

(Cake)PHP正则表达式中的双引号不匹配,php,regex,cakephp,double-quotes,Php,Regex,Cakephp,Double Quotes,我有一个正则表达式,它应该匹配以下形式的字符串:src=“/blkjad.dafsdf”>。它看起来是这样的:(src | href)(\s*)?=(\s*)?(\“|\”)/([^/].*)\4 虽然这在我运行的一个站点上运行良好,但在另一个内置的Cake上却始终失败 我现在不知所措。我工作的一位高级开发人员只是看了一下,基本上摇了摇头。不幸的是,我对蛋糕不太精通,而且我似乎在网上找不到任何类似的问题。有什么想法吗 编辑:对于记录,失败的正则表达式使用preg_match_all,而另一个(相

我有一个正则表达式,它应该匹配以下形式的字符串:src=“/blkjad.dafsdf”>。它看起来是这样的:(src | href)(\s*)?=(\s*)?(\“|\”)/([^/].*)\4

虽然这在我运行的一个站点上运行良好,但在另一个内置的Cake上却始终失败

我现在不知所措。我工作的一位高级开发人员只是看了一下,基本上摇了摇头。不幸的是,我对蛋糕不太精通,而且我似乎在网上找不到任何类似的问题。有什么想法吗

编辑:对于记录,失败的正则表达式使用preg_match_all,而另一个(相同/工作正则表达式)使用preg_replace。下面是一些相关代码

$regex['php'] = '/(src|href)(\s*)?=(\s*)?(\"|\')\/([^\/].*?)\4/';

$php = htmlspecialchars(file_get_contents(sprintf('/home/x/x/x/x/x/%s.%s', $string,    $extension)));                                                  echo $php;

 if (preg_match_all($regex['php'], $php, $out)){
    echo sizeof($out);
    echo nl2br(print_r($out, true));
 } else {
    echo 'Doesn\'t work';
 }

我认为问题来自htmlspecialchars()调用

如合同中所述

执行的翻译是:

  • “&”(与号)变为“&”
  • “”(双引号)变为“”
  • 未设置ENT_NOQUOTES时。“'”(单引号)仅变为“'”
  • 当设置ENT_引号时。“”

粘贴一些相关代码怎么样?这个正则表达式是否被传递到Cake框架函数中?还是使用preg_u*函数族?您几乎没有提供可能有助于解决问题的上下文信息。您还可以添加一些失败的测试输入和预期的输出吗?当然可以。输入失败可能类似于src=“/blkjad/dafsdf.php”>。预期的输出将是完全匹配的,或者在表达式/(\“”/,“”)的情况下。然而,在上面的cake代码中,双引号根本不匹配。我不确定这是否是一个特定于蛋糕的问题,因为在我运行的另一个php代码中,相同形式的相同正则表达式可以很好地工作。