0

我需要获取 html 标签之间的名称。

<div class="from"><span class="profile fn">firstnamed familyname</span></div>

到目前为止,我根据其他有相同问题的人的例子进行了尝试:

preg_match(";from"><span class="profile fn>(.?)</span></div>;", $text, $match)

但它不起作用。

正确的方法是什么?

非常感谢。

4

3 回答 3

1
preg_match(";from"><span class="profile fn>(.?)</span></div>;", $text, $match)

...应该触发这个:

解析错误:语法错误,意外的 '<'

除此之外:

  • 您寻找一个不在原始文本中的未封闭属性:

    class="profile fn对比class="profile fn"

  • 您寻找零个或一个字符:

    .?

固定的正则表达式将是:

$text = '<div class="from"><span class="profile fn">firstnamed familyname</span></div>';
preg_match(';from"><span class="profile fn">(.*)</span></div>;', $text, $match);
var_dump($match);

当然,这可能会在大型 HTML 文档上中断(</span></div>稍后再出现)。正则表达式在用于解析 HTML 时是不可能正确的。

于 2013-02-06T15:49:11.477 回答
0

这:

preg_match(";from"><span class="profile fn>(.?)</span></div>;", $text, $match)

在语法上不正确,您必须转义双引号:

preg_match(";from\"><span class=\"profile fn>(.?)</span></div>;", $text, $match)
于 2013-02-06T15:41:47.347 回答
0

您需要转义特殊字符(例如引号):

preg_match(";from\"><span class\=\"profile fn>(.?)</span></div>;", $text, $match)
于 2013-02-06T15:43:20.740 回答