2011-07-14 10 views
-1

編集: 申し訳ありません申し訳ありませんが私の最初の投稿で非常に明確でした。私はデータベースにテキストを保存しています。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

+1

E(ヴァル)修飾子を使用しないでくださいを代わりに 'preg_replace_callback'を使用してください。 – ThiefMaster

+0

そして、正規表現でホイールを再現しないでください。 URLのquery-info-partを解析する関数はすでにPHPで利用可能です。 ['parse_url'](http://php.net/manual/en/function.parse-url.php)を参照してください。 – hakre

答えて

1

です。 $_GET['id']を使ってみませんか?

EDIT:決して気にしないでください。私はそれらの機能について知りませんでした!車輪の再発明する必要はありませ

+0

おそらく、現在のページのURLではないからです。 – ThiefMaster

+0

これは私が元々考えていたものですが、その質問は非常に混乱した形で言い表されています。 –

+0

申し訳ありませんが、私は非常に明確ではありませんでした。これは、サイトに表示するために処理しているデータベースに格納されているテキストをユーザーが投稿したもので、テキスト内の商品リンクをファンシーリンクに変換します。 – Vibes

5

(でもparse_urlは、それはありません):

$url="http://192.168.2.22/dev/details.php?id=21&module=info#Desc"; 

parse_str(parse_url($url,PHP_URL_QUERY), $arr); 

print_r($arr); 

あなたが得られます。

Array 
(
    [id] => 21 
    [module] => info 
) 

parse_str() parse_url()

+0

申し訳ありませんが私は非常に明確だった、ivは私の質問を編集 – Vibes