ホームページ >バックエンド開発 >PHPチュートリアル >専門家の方、この正規表現のどこが間違っているのでしょうか?

専門家の方、この正規表現のどこが間違っているのでしょうか?

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBオリジナル
2016-06-13 13:16:27829ブラウズ

専門家の方、この正規表現の何が問題なのか教えてください。 ?
要件: 文字列 $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('#(?

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。