2011-06-11 2 views
0
$str = preg_replace("'\(look: (.{1,80})\)'Ui", 
      "(look: <a href=\"dict.php?process=word&q=\\1\">\\1</a>)",$str); 

URL을 인코딩하고 싶습니다. 어떻게 할 수 있습니까?prel_replace의 urlencode

은 내가 preg_replace이다의를 urlencode() 함수? 그런 일을 사용할 수 있습니다

$str = preg_replace("'\(look: (.{1,80})\)'Ui", 
      "(look: <a href=\"dict.php?process=word&q=\\1\">\\1</a>)",$str); 

당신이 preg_replace이다에 URL을 인코딩에 대해 어떤 생각을 가지고 있습니까?

답변

6

당신이 직접 코드를 실행하여 대체 문자열을 생성 할 수있는 preg_replace_callback를 사용할 수 있습니다

:

$str = preg_replace_callback(
    "'\(look: (.{1,80})\)'Ui", 
    create_function(
     '$matches', 
     'return \'(look: <a href="dict.php?process=word&q='.urlencode($matches[1]).'">'. 
      $matches[1].'</a>)\';' 
    ), 
    $str); 

당신이 PHP> = 5.3을 사용하는 경우, 당신은 덜 고통스러운 약간 위를 할 수 있습니다

$str = preg_replace_callback(
    "'\(look: (.{1,80})\)'Ui", 
    function($matches) { 
     return "(look: <a href=\"dict.php?process=word&q=".urlencode($matches[1])."\">". 
       $matches[1]."</a>)"; 
    }, 
    $str); 
+1

덕분에, 그리고 당신이 preg_replace_callback 첫 번째 코드 추출물은 return 문에 따옴표의 일부가 빠져없는 – ocanal

+0

이어야로 preg_replace이다를 변경하는 것을 잊었다 생각 ''리턴 \ '(보기 : \'. $matches[1].\') \'; '' –

+0

큰 감사합니다 ~! – Lin

관련 문제