ホームページ >バックエンド開発 >PHPチュートリアル >専門家の方、この正規表現のどこが間違っているのでしょうか?
専門家の方、この正規表現の何が問題なのか教えてください。 ?
要件: 文字列 $str の href 内のハイパーリンクを抽出します。抽出されたハイパーリンクに「id=number」が含まれている場合は go.php?id=number に置き換え、それ以外の場合は # に置き換えて、置き換えたリンクを配置します。現状では抽出はできても、元の場所に戻すとタグ全体が置き換えられてしまうのですが、何が問題だったのでしょうか? ?
$str='';
$str=preg_replace(' [a-zA-z]+://[^s]*','endecode::showdescurl("$2")',$str);
echo $str;
endecode クラスの静的メソッド: showdescurl コードは次のとおりです:
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> static function showdescurl($url){ if(strpos($url,'id') !==false){ preg_match('/id=(\d+)/i',$url,$ar); return 'go.php?id='.$ar[1]; }else{ return '#'; } }