2012-07-12 1 views
0

이것은 사이트 검색 스크립트 용입니다. str_ireplace를 사용하면 검색 결과의 대소 문자가 변경됩니다. 예를 들어 쿼리 문자열이 "검색 문자열"이고 "검색 문자열"이 포함 된 레코드가 발견되면 후자는 대문자를 잃게됩니다. 이 주변의 어떤 방법?대문자 사용하지 않고 str_replace를 사용하는 방법?

검색 결과를 강조 표시해야합니다.

문제는 문자열을 찾지 못하거나 강조 표시하지 못하는 것입니다. str_ireplace를 사용하여이를 수행 할 수 있습니다. 그러나 이것은 자본화를 잃을 것이다. 내가 원하는 건 대문자를 그대로 남겨 두는 것이다.

+1

문자열을 수정하지 않으려면 왜 문자열 바꾸기 기능을 사용하고 있습니까? 데이터를 수정하도록 설계된 함수 대신'stripos'와 같은 문자열 내에서 검색하는 함수를 사용하십시오. 또는 사용중인 코드를 게시하면 문제가 정확히 무엇인지 알 수 있습니다. – Jazz

+0

검색 결과에 나타나는 사용자가 제출 한 단어를 강조 표시하는 검색 스크립트입니다. str_replace의 경우 대문자로 인해 표시되는 모든 단어를 강조 표시하지 않았지만 str_ireplace의 경우에는 강조 표시 한 모든 단어가 있지만 대문자를 잃어 버렸습니다. 아마도 preg_match가 더 좋을 것입니다. – reformed

답변

1

preg_replace을 사용할 수 있습니다.

$haystack = 'Some text here.'; 
$str = preg_replace("#(.*)(text)(.*)#i", '\1<b>\2</b>\3', $haystack); 
+0

감사합니다. – reformed

0

검색을 위해 stripos을 대신 사용하십시오.

if (stripos($haystack, $needle) !== false) 
    echo $needle, ' found!'; 
+0

검색 결과에 대한 강조 표시 기능이 필요합니다. – reformed

+1

그런 다음 preg_replace를 사용하십시오. – m02ph3u5

0

str_ireplace 대신 str_replace를 사용하면됩니다.

+0

예, 그렇지만 "검색 문자열"이 "검색 문자열"또는 "검색 문자열"을 선택하지 않습니다. – reformed

+1

'i'한정자와 함께 preg_replace를 사용해보십시오. –

관련 문제