2013-10-31 2 views
0

배열로 변환 한 문자열이 있습니다. 그리고 내가 변환 한 동일한 문자열은 검색 텍스트의 덩어리에있는 키워드와 일치하는 키워드입니다.preg_replace HTML 태그가있는 배열입니까?

배열과 함께 가고 싶습니다. 키워드를 사용하여 유사한 키워드가있는 텍스트 묶음에 html 태그를 추가하십시오. 예를 들어

: 키워드 : 나는 두 개, 네 고양이, 이십 개 소를 소유 :

텍스트 전에 개, 고양이, 소.

텍스트 : 나는 두 , 네 고양이, 이십 개 을 소유하고 있습니다.

내가 가지고있는 텍스트 청크는 변수에 있습니다.

하지만 preg_replace();와 함께 사용하려면 정확히 어떤 정규식이 필요한지 잘 모르겠습니다.

<?php 
    echo preg_replace($text, <b></b>, $keywords); 
?> 

나는 올바른 방향으로 가고 있습니까? |와 단어를 결합하여 단어와 일치하는 교대를 사용하는 정규 표현식을 작성

echo preg_replace('/\b((?:cat|dog|cow)\S*)/i', `<b>$1</b>`, $keywords); 

답변

2

:

+0

고마워요. 텍스트를 출력하지만 어떤 키워드도 태그로 감싸지 않았으며, 제가 누락 되었습니까? –

+0

나를 위해 작동합니다. 데모를 참조하십시오. – Barmar

+0

내 문제는 내 키워드가 소문자와 대문자 모두이고 텍스트가 그 반대 일 수 있다는 것입니다. 어느 것이 든 위 또는 아래 인 경우 Regex를 텍스트와 일치하도록 어떻게 조정할 수 있습니까? –

0

는이 코드를 사용할 수 있습니다. 대체 문자열에서 일치하는 텍스트 부분을 참조하려면 $0을 사용하십시오. 대신

$regexp = '/\b(' . implode('|', $keywords) . ').*?\b/i'; 
echo preg_replace($regexp, '<b>$0</b>', $text); 

DEMO

+1

사용할 수있는'\의 S''[^ \ S]' – Barmar

+0

@Barmar : 네 덕분에 업데이트되었습니다. – anubhava