2012-09-13 2 views
-2

다음 코드와 같이 preg_replace()을 사용하고 있습니다.PHP는 preg_replace에서 출력하지 않습니다.

$p = preg_replace('/#[\d\w]+/', '<a href="http://'.$_SERVER['HTTP_HOST'].'/search/term:'.str_replace('#', rawurlencode('%23'), '${1}').'">${1}</a>', $p); 
$p will be a string like '(#ben)' 

그러나 $1을 사용하면 아무 것도 출력되지 않습니다. $1을 잘못 사용하고 있습니까?

해야 출력이 :

preg_replace('/(#[\d\w]+)/', ... 
      ^ ^

그것이 this demo에서 작업을 참조하십시오 : <h2>Bens (<a href="http://example.com/search/term:#ben">ben</a>) cat</h2>

+1

$ 1이 (가) 반환되지 않으면 일치하는 항목이 없습니다. 정규 표현식이 맞습니까? – Asciiom

+0

코드가 * 수행 할 작업 *을 자세히 설명해 주실 수 있습니까? 예상되는 결과는 무엇입니까? – Lix

답변

6

당신은 참조 $1을 다시 참조하기 위해 캡처 그룹이 필요합니다.

관련 문제