2011-09-15 6 views
0

저는 "오늘 아침에 두껍습니다."라는 간단한 질문을 용서하십시오. array('keyword1','keyword2'....)와 나는 텍스트의 문자열을 가지고있다. (블로그 콘텐츠와 같은 비트는 몇 단어가 아니라 200-800 개의 단어 일 수있다.) 키워드 문자열을 검색하고 href 링크로 바꾸는 가장 좋은 방법은 무엇인가? . 따라서 텍스트 '키워드 1'(일반 텍스트로)은 <a href='apage'>keyword1</a>이됩니다.PHP가 href 링크로 문자열의 키워드를 바꿉니다.

이 부분이 두껍습니다.

고마워요.

답변

2

일반적인 preg_replace 경우 :

$text = "There is some text keyword1 and lorem ipsum keyword2."; 
$keywords = array('keyword1', 'keyword2'); 

$regex = '/('.implode('|', $keywords).')/i'; 

// You might want to make the replacement string more dependent on the 
// keyword matched, but you 'll have to tell us more about it 
$output = preg_replace($regex, '<a href="apage">\\1</a>', $text); 

print_r($output); 

See it in action.

이제 위의 내용은 href이 일치 키워드의 기능이 아니라는 점에서 매우 똑똑한 대체 방법을 사용하지 않지만 실제로는 그렇게하는 것이 좋습니다. 더 많은 유연성을 얻으려면 여기 preg_replace_callback을 보거나 질문을 편집하고 목표에 대한 자세한 정보를 제공하십시오.

+0

내가 원했던 것을 진심으로 감사 드리며, 키워드가 처음 나타날 때만 "일치"할 수있는 방법이 있습니까? –

+0

@RussellParrott : * 어느 하나의 * 키워드의 첫 번째 인스턴스 만 일치시키는 것은 [simple] (http://stackoverflow.com/questions/6729710/replace-only-first-match-using-preg-replace)입니다. * 각각의 * 키워드의 첫 번째 인스턴스를 일치시키는 것은 그렇게 간단하지 않습니다. 하나의 루프에 하나의 제한이있는 각각의 키워드에 대해'preg_replace'를 수행하거나 (바람직하게는)'preg_replace_callback'을 사용하고, 적어도 한 번 이상 키워드가 이미 일치했는지 기억하고, 키워드 자체를 대체 키워드로 반환해야합니다 이미 본 사람들을 위해. – Jon

0

왜 str_replace() 대신 정규식을 사용 하시겠습니까! Regex는 작동하지만 믿을 수 없을 정도로 간단한 질문을 복잡하게 만듭니다.

관련 문제