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