我正在尝试在 php 中提取以下内容,但我的正则表达式或 egreg 不合适,我真的很困惑。请帮我把这些变量放在两个变量中:
<a onmouseover="dgsa.sm(this)" onmouseout="dgsa.hm();" href="http://www.cnn.com/testpage.html#page_mostview">test titles</a>
我想要变量:
$url="http://www.cnn.com/testpage.html#page_mostview";
$title="test titles";
非常感谢对此的任何帮助。
如果你有一个大字符串:
<?php
$str = '<a href="ABC.jpg">Hello</a> <a href="DEF.jpg">Bye</a>';
$expr = '/<a[^>]*? href='"(?<url>[^'"]+)'"[^>]*?>(?<text>.*?)<'/a>/';
echo preg_match_all($expr, $str, $amatches);
echo '<br><br>';
print_r($amatches);
?>
您还可以使用:
preg_match_all($expr, $str, $amatches, PREG_SET_ORDER);
哪个可能更适合(我更喜欢这种方法)
如果您有矛形字符串和句柄在循环中,请改用preg_match。Tis 只会返回第一个,然后你循环。
编辑:这是您的示例,根据要求。
<?php
$str = '<a onmouseover="dgsa.sm(this)" onmouseout="dgsa.hm();" href="http://www.cnn.com/testpage.html#page_mostview">test titles</a>';
$expr = '/<a[^>]*? href='"(?<url>[^'"]+)'"[^>]*?>(?<text>.*?)<'/a>/';
echo preg_match_all($expr, $str, $amatches, PREG_OFFSET_CAPTURE);
echo '<br><br>';
print_r($amatches);
?>