【问题标题】:php regex - need 2 groups capturedphp regex - 需要捕获 2 个组
【发布时间】:2012-09-26 22:02:09
【问题描述】:

我需要捕获 2 个组:1-expr(可以为空); 2-essi

见下面的代码

$s = 'regular expr<span>essi</span>on contains';
function my_func($matches){

    //I need 2 groups captured
    //$matches[1] - "expr" (see $s before span) - can be empty, but I still need to capture it
    //$matches[2] - "essi" (between spans)
}
$pattern = "???";
echo preg_replace_callback($pattern, my_func, $s);

【问题讨论】:

  • 嗯,我已经回答过了,但我不应该鼓励这个,所以还是有这个问题:你试过什么?

标签: php regex html-parsing


【解决方案1】:
$pattern = "~(\w*)<span>(\w+)</span>~";

这应该可以解决问题。

如果第二组也应该能够匹配空字符串,请将@​​987654322@ 替换为另一个*。请注意,\w 将匹配字母、数字和下划线。如果过多或不足,请用适当的字符类替换它。

还有一件事:我认为preg_replace_callback 的语法要求您将函数名作为字符串提交。

【讨论】:

  • 我想我试着改写我的问题 - 我想我删除了这个 q。很抱歉浪费了您的时间。
  • @Jeffz 改写是什么意思?这不是您真正想要的吗?
  • @Jeffz :如果您的问题相同,但经过澄清和改写,然后只需编辑问题(点击问题标签下方的“编辑”链接),不要删除它;这对那些花时间尝试帮助你的人来说是非常无礼的。清楚地解释您的问题,解释您尝试过的内容以及出了什么问题。
  • @Jeffz 如果您指的是我对这个问题的评论。我不是故意粗鲁的。我只是想指出,在 Stack Overflow 上解释您尝试过的内容是一种常见的礼貌(无论如何,您可能已经知道了 400 多个代表)。但是我认为,无论如何,如果您仍然包含该信息,它将大大增加您的问题的价值。而且它还会降低其他人反对它的可能性。
  • @m.buettner 我没有这样想……这里已经很晚了,我有点累了
猜你喜欢
  • 2014-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多