この投稿は、dz215136304 によって 2012-07-05 08:54:58 に最終編集されました
要件: 文字列 $str の href 内のハイパーリンクを抽出します。抽出されたハイパーリンクに「id=number」が含まれている場合は、それを go.php?id=number に置き換え、それ以外の場合は # に置き換え、置き換えたリンクを元に戻します。現状では、抽出することはできますが、元の場所に戻すと、3499910bf9dac5ae3c52d5ede7383485 タグ全体が置き換えられます。 ?
$str='cc51f7c983ae82a38fa640bed428259e75cc83e9f9a2027cf7076b6cd20325a9';
$str=preg_replace('[a-zA-z] ://[^s]*','endecode::showdescurl("$2")',$str);
echo $str;
endecode クラスの静的メソッド: showdescurl コードは次のとおりです:
<br />
static function showdescurl($url){<br />
if(strpos($url,'id') !==false){<br />
preg_match('/id=(\d+)/i',$url,$ar);<br />
return 'go.php?id='.$ar[1];<br />
}else{<br />
return '#'; <br />
} <br />
<br />
}<br />
-----解決策--------------------------------$str = preg_replace('# (?<=href...)([a-zA-z] ://)([^'"]*)#e','endecode::showdescurl ("$2")',$str);