ホームページ >バックエンド開発 >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 コードは次のとおりです: PHP コード
<!--
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 '#';
}
}
------解決策-- - ------------------
$str = preg_replace('#(?