我需要使用正则表达式来捕获href的内容.例如,当我将规则应用于href ="www.google.com"时,我想获得www.google.com.另外,我想忽略所有只有#值的href.
现在,我正在玩一段时间,我想出了这个:
href=(?:\"|\')((?:[^#]|.#.|.#|#.)+)(?:\"|\')
Run Code Online (Sandbox Code Playgroud)
当我在http://www.rubular.com/中尝试它时,它就像一个魅力,但我需要在PHP中使用它与preg_replace_callback,并且我没有得到预期的结果(用于在PHP中测试它,我正在使用这个网站:http://www.pagecolumn.com/tool/pregtest.htm).
我的错在哪里?
由于使用正则表达式解析HTML是Bad Thing™,我建议使用一种不那么粗糙的方法:
$dom = new DomDocument;
$dom->loadHTML($pageContent);
$elements = $dom->getElementsByTagName('a');
for ($n = 0; $n < $elements->length; $n++) {
$item = $elements->item($n);
$href = $item->getAttribute('href');
// here's your href attribute
}
Run Code Online (Sandbox Code Playgroud)