2011-05-11 3 views
4

と交換することにpreg_replaceを使用した:私が使用しようとしています参照配列のキーをバックアップし、私はこのような文字列持つ値

$fruitArray["apple"] = "green"; 
$fruitArray ["banana"] = "yellow"; 

http://mysite.com/script.php?fruit=apple 

をそして私はこのような連想配列を持っていますpreg_replaceを文字列に置き、配列のキーを使用してappleを参照して緑色に置き換えます。

$string = preg_replace('|http://mysite.com/script.php\?fruit=([a-zA-Z0-9_-]*)|', 'http://mysite.com/'.$fruitArray[$1].'/', $string); 

プロセスは戻る必要があります。

http://mysite.com/green/ 

これは明らかに私にとっては役に立ちません。 preg_replace文で$fruitArray[$1]をどのように操作すれば、PHPが認識され、逆参照され、緑色に置き換えられるのですか?

ありがとうございます!

答えて

5

/e evalフラグを使用するか、いくつかの行をスペアできる場合は、preg_replace_callbackを使用する必要があります。

$string = preg_replace(
    '|http://mysite.com/script.php\?fruit=([a-zA-Z0-9_-]*)|e', 
    ' "http://mysite.com/" . $fruitArray["$1"] ', 
    $string 
); 

URL連結式全体が一重引用符で囲まれていることに注意してください。それは後でPHP式として解釈され、空白は消え、static URL文字列はfruitArrayにあるものと連結されます。

+0

優秀!あなたのコードは完全に機能しました。そんなにありがとう、頭を掻く時間を節約しました! – Matt

+1

「e」修飾子は償却されていますのでご注意ください:http://php.net/manual/en/migration55.deprecated.php – patrick

関連する問題