【发布时间】:2010-11-15 11:35:16
【问题描述】:
我需要使用正则表达式和 php 来捕获一个锚点 html 标记的名称,所以我会从文本中得到“hello”(锚点的名称)
试过了:
$regex = '/(?<=name\=")#([^]+?)#(?=")/i';
preg_match_all($regex, $content, $data);
print_r($data);
我跟踪了 apache 错误日志以发现:
PHP 警告:preg_match_all(): 编译失败:缺失 终止 ] 用于字符类 偏移量 26
也试过了:
$regex = '/(?<=name\=")([^]+?)(?=")/i';
$regex = '/(?<=name\=")[^]+?(?=")/i';
基本相同。 我想我错过了一些东西,可能是一个愚蠢的斜线或类似的东西,但我不确定是什么
将不胜感激任何帮助 谢谢
已解决
好的,感谢@stillstanding 和@Gordon,我已经设法使用非常简单的 DOMDocument 做到了这一点 所以,为了记录,这里是片段
$dom = new DOMDocument;
$dom->loadHTML($content);
foreach( $dom->getElementsByTagName('a') as $node ) {
echo $node->getAttribute( 'name' );
}
【问题讨论】:
-
PHP 用户不使用
/x模式,以便在非疯狂模式 中处理他们的模式吗?怎么会?