2010-01-22 6 views
3

tOm ArNfElD을 검색하고 $variable이 "Tom Arnfeld"인 경우, 대소 문자를 구분하지 않고 LIKE의 결과를 얻습니다.텍스트 감싸기 - PHP로 대소 문자 구별

$variable에 일치하는 텍스트를 <span></span>으로 묶어서 어떻게 검색 결과와 일치하는 항목을 표시 할 수 있습니까? $variable의 원래 사례를 유지해야합니다.

답변

1
$textToPrint = preg_replace("/({$variable})/i","<span class"myclass">$1</span>,$text); 

도움이 될 것입니다

+0

grrr ... 다른 사람이 먼저 답변을 작성하는 동안 – Andreas

+0

가 완벽하게 작동합니다! – tarnfeld

+0

이것은 잠재적으로 허위이며,'preg_quote()'를 사용하여)'$ variable'을 탈출하지 않을 것입니다. –

0

당신이 (비록, preg_quote() 문자열을 잊지 마세요) 전체 문자열을 교체하거나 정규 표현식에 LIKE-매개 변수를 변환 preg_replace() 사용하려는 경우가 str_ireplace()를 사용할 수 있습니다.

예 사용하여 정규 표현식 :

$parts = explode('%', $likeQuery) 
foreach ($parts as &$innerString) { 
    $innerParts = explode('_', $innerString); 
    foreach ($innerParts as &$part) { 
     $part = preg_quote($part, '/'); 
    } 
    // always unset references when you're done with them 
    unset($part): 
    $innerString = implode('.', $innerString); 
} 
// always unset references when you're done with them 
unset($innerString): 
$regex = implode('.*?', $parts); 
$transformedString = preg_replace("/$regex/", '<span>$0</span>', $stringToTransform); 
1

나는 정규 표현식을 사용 :

$text = preg_replace('~(' . preg_quote($search, '~') . ')~i', '<span>$1</span>', $text); 

다른 방법은 하나 soulmerge suggested (str_ireplace())처럼, 너무있다 :

$text = str_ireplace($search, '<span>' . $search . '</span>', $text);