0

私はphpで以下を抽出しようとしていますが、正規表現またはegregが適切でなく、本当に混乱しました. これらを2つの変数に入れるのを手伝ってください:

  <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

1 つの大きな文字列がある場合:

<?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 を使用してください。Ti は最初のものだけを返し、ループします。


編集:要求に応じて、ここにあなたの例があります。

<?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 に答える