0

我试图在 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";

非常感谢您对此提供的任何帮助。

4

1 回答 1

0

如果你有一个大字符串:

<?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);

?>
于 2012-08-09T02:11:53.817 回答