2011-11-20 3 views
0

문자열을 한 번 바꾸려고 시도했는데이 오류가 발생하면 도움이됩니다.PHP preg_replace : PHP 오류 [2] : preg_replace() : 구분 기호는 영숫자 또는 백 슬래시가 아니어야합니다.

Error[2]: preg_replace(): Delimiter must not be alphanumeric or backslash 

어떤 생각 :

$link = '<a href="'.$url.'" title="'.$anchor.'">'.$anchor.'</a> '; 
$text = preg_replace(/" ".$anchor." "/,"", $text,1); 

이 오류 메시지 얻기? 내가 원하는 것은 텍스트의 첫 번째 항목을 링크로 바꾸는 것입니다.

답변

0
$link = '<a href="'.$url.'" title="'.$anchor.'">'.$anchor.'</a> '; 
$text = preg_replace("/ ".$anchor." /" ,"" , $text , 1); 
// If the spaces were intended 
// OR 
$text = preg_replace("/".$anchor."/" ,"" , $text , 1); 
// If you do not mean for the anchor to have a space before and after it. 

정규 표현식 세그먼트는 문자열 또는 문자열 배열이어야합니다.

$text = preg_replace("~$anchor~", $link, $text, 1); 

이전 오류가 유효하지 않은 구문으로 하나 발생, 또는 $anchor에 의해 슬래시 자체를 포함했다 :

+0

그래, 고마워, 내가 방금이 실수를 발견했다.). – Tim

+0

이 답변은 완전히 쓰레기입니다. [preg_replace()] (http://php.net/manual/en/function.preg-replace.php)는'mixed $ pattern','mixed $ replacement','string $ subject' 인자를 취합니다. 나는 그가 '1'(숫자 리터럴)에'$ anchor '를 찾으려고하지 않을 것이라고 확신합니다 ... –

+0

@macek : 글쎄, 내 대답이 마음에 들지 않는다면, 당신 자신의 것을 하나 제공해주세요. 그리고 '1'은 제한 위치에 있습니다. 여러분이 PHP.net 웹 사이트를 읽을 수있게되어서 반갑습니다. (문자열 배열에 대해 조금 수정했습니다.) 다음 번에는 좀 더 자세히 읽으 려합니다. –

0

당신은이 경우에는 따옴표를 활용 또한 다른 구분 기호를 사용하고 있습니다. (이제는 탈출해야합니다 .을 구분 기호로 사용하면 $anchor에 포함되지 않을 수 있습니다. 그렇지 않으면 preg_quote를 참조하십시오.)

0

나는 이와 같은 작업을하려고합니다.

$text = "lorem ipsum dolor"; 

$anchor = "ipsum"; 

$link = '<a href="/foobar" title="'.$anchor.'">'.$anchor.'</a>'; 

$text = preg_replace('/'.preg_quote($anchor, '/').'/', $link, $text, 1); 

echo $text; 

#=> lorem <a href="/foobar" title="'.$anchor.'">'.$anchor.'</a> dolor 

당신은 $anchor는 정규식 패턴으로 이스케이프 할 몇 가지 문자를 포함 할 수있는 경우에 preg_quote()를 사용하는 것이 좋습니다는 tehplayground.com

여기에 작업을 참조하십시오.