<?
$str='<a href="/search.php?ID=1" target=_blank>a1</a>
<a href="/search.php?ID=2" target=_blank>a2</a>
<a href="/search.php?ID=3" target=_blank>a3</a>
<a href="/search.php?ID=4" target=_blank>a4</a>
<a href="/search.php?ID=5" target=_blank>a5</a>';$abc="/<a href=\"\/search.php\?ID=(\d+)\" target=_blank>(.+)<\/a>/";preg_match_all($abc, $str, $matches);print_r($matches[1]);
print_r($matches[2]);
?>
这样取得的两个数组分别为
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 ) 
Array ( [0] => a1 [1] => a2 [2] => a3 [3] => a4 [4] => a5 ) 现在我想把数组$matches[1]的内容用$matches[2]来代替.并将值返回$str去
也就是最终$str的值要变成<a href="/search.php?ID=a1" target=_blank>a1</a>
<a href="/search.php?ID=a2" target=_blank>a2</a>
<a href="/search.php?ID=a3" target=_blank>a3</a>
<a href="/search.php?ID=a4" target=_blank>a4</a>
<a href="/search.php?ID=a5" target=_blank>a5</a>这样要怎么实现?

解决方案 »

  1.   

    $str=' <a href="/search.php?ID=1" target=_blank>a1 </a> 
    <a href="/search.php?ID=2" target=_blank>a2 </a> 
    <a href="/search.php?ID=3" target=_blank>a3 </a> 
    <a href="/search.php?ID=4" target=_blank>a4 </a> 
    <a href="/search.php?ID=5" target=_blank>a5 </a>'; echo preg_replace("/<a href=\"\/search.php\?ID=(\d+)\" target=_blank>(.+) <\/a>/", '<a href="/search.php?ID=\\2" target=_blank>\\1 </a>', $str);
      

  2.   

    $str=' <a href="/search.php?ID=1" target=_blank>a1 </a> 
    <a href="/search.php?ID=2" target=_blank>a2 </a> 
    <a href="/search.php?ID=3" target=_blank>a3 </a> 
    <a href="/search.php?ID=4" target=_blank>a4 </a> 
    <a href="/search.php?ID=5" target=_blank>a5 </a>'; echo preg_replace("/<a href=\"\/search.php\?ID=(\d+)\" target=_blank>(.+) <\/a>/", '<a href="/search.php?ID=\\2" target=_blank>\\2 </a>', $str);