【问题标题】:Why doesn't preg_match work in a function of preg_replace_callback为什么 preg_match 在 preg_replace_callback 的函数中不起作用
【发布时间】:2014-01-16 10:54:30
【问题描述】:

我知道将它用于 HTML 字符串操作不是很好,但有时 DOMDocument 在我使用的 PHP 环境中不可用。

preg_replace_callback($pattern, function ($matches) {

    $z = $matches[2];
    preg_match('/src="([^"]*)"/i', $z, $t);

    //a lot of string manipulation going on here

    return $t[0].'and'.$matches[2];

}, $content_taken_FROM_HTML);

这里的$matches[1]'src="a.jpg"'

如果我输入$z='src="a.jpg"',它会起作用。但只要我把它保留为$z= $matches[1];,它应该给出相同的字符串,它就不起作用。

这里发生了什么?又该如何解决呢?

【问题讨论】:

  • 您的退货声明中缺少分号。
  • 你需要$z = $matches[2];还是$z = $matches[1];
  • @MMM 是的!你很细心!
  • 你能显示var_dump($matches);的输出吗
  • @anubhava 啊哈!谢谢!问题解决了!感谢您的建议var_dump

标签: php html regex


【解决方案1】:

原始字符串中的"\ 转义,可能是由preg_replace_callback() 中内置的$matches 引起的。

应该有stripslashes(),我的朋友们!

stripslashes()

取消引用带引号的字符串。

感谢 anubhava 建议 var_dump($matches)。确实是调试的好方法!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-25
    • 1970-01-01
    • 2015-04-15
    • 1970-01-01
    • 2012-05-14
    • 2019-11-06
    • 2022-01-23
    • 1970-01-01
    相关资源
    最近更新 更多