編集: 申し訳ありません申し訳ありませんが私の最初の投稿で非常に明確でした。私はデータベースにテキストを保存しています。IDはそれを処理して、私のサイトの製品へのリンクを探して、素晴らしいリンクに変えたいと思っています。以下は2リンクと私の現在のEXPです。 2番目のリンク(Link2)は期待通りに動作し、値21をdetailsLink()に渡します。問題はLink1にあり、2の値をdetailsLink()ではなく21に渡します。 detailsLink()は製品評価/猫などとのリンクを再作成するので、URLを完全に無視したいと思っています。httpやhttpsリンクでも動作するはずです。preg_match ID in URL
リンク1:http://192.168.2.22/dev/details.php?id=21 リンク2:http://192.168.2.22/dev/details.php?id=21&module=info#Desc
$s = preg_replace("%(?<![=\]\'\"\w])https?://[^<>\s\'\",]*$ADDRESS\/details\.php\?id=([0-9]+)[^<>\s\'\",]+%ie", "detailsLink(\\1)", $s);
$アドレスの値は、私は理解していない192.168.2.22/dev
E(ヴァル)修飾子を使用しないでくださいを代わりに 'preg_replace_callback'を使用してください。 – ThiefMaster
そして、正規表現でホイールを再現しないでください。 URLのquery-info-partを解析する関数はすでにPHPで利用可能です。 ['parse_url'](http://php.net/manual/en/function.parse-url.php)を参照してください。 – hakre