2011-05-11 7 views
4

값으로 참조 배열 키를 백업하고 교체 preg_replace이다 사용 :나는이 같은 문자열이

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

을 그리고이 같은 연관 배열이 있습니다

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

내가 사용하려고 다음과 같이 참조 사과를 백업하고 녹색으로 바꿀 배열의 키를 사용하여 문자열 preg_replace이다 :

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

프로세스가 반환되어야합니다.

분명히 이것은 나를 위해 작동하지 않습니다; 어떻게 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 
); 

전체 연결식이 작은 따옴표로 묶여 있는지주의하십시오. 나중에 PHP 표현식으로 해석되며 공백 문자는 사라지고 정적 URL 문자열은 fruitArray에있는 것과 연결됩니다.

+0

우수! 코드가 완벽하게 작동했습니다. 너무 고마워, 몇 시간 동안 머리를 긁적 거리지 않게 해 줘! – Matt

+1

'e'한정자는 가치가 떨어집니다. http://php.net/manual/en/migration55.deprecated.php – patrick