2010-01-22 3 views
1

나는 <span> 태그 검색 한 텍스트를 감싸 검색을 구축하고 있는데이 코드는 확인 작업이 있습니다str_ireplace를 사용할 때 대문자를 유지 하시겠습니까?

str_ireplace($q,'<span>'.$q.'</span>',$row[name]); 

문제입니다, Tom에 대한 사용자 검색이 멋지다 Tom 표시됩니다 경우, 그러나 tomstr_ireplace으로 입력하면 tom이 표시됩니다. 실제 문제는 사람이 tOm aRnFeLd을 입력해도 괜찮 았지만, 페이지에 미학이 실제로 표시된다는 것입니다. tOm aRnFeLd

두 문자열의 대문자와 소문자는 어떻게 유지합니까? 문자열에서 대소 문자를 구분하지 않는 텍스트를 래핑하는 더 좋은 방법이 있습니까?

답변

0

사용 stristr는 대소 문자를 구분하지

$keyword_caseRetained_all = stristr($excerpt, $keyword); 

하지만 당신은 바늘 부분을 유지하기 위해 SUBSTR을 사용할 필요가 그래서, 너무 바늘과 건초 더미의 나머지를 반환의 건초 더미에서 바늘을 얻을 수 있습니다. 당신이 알면, 당신은 좋은 쥐에 라인 1과 2를 결합 할 수 있습니다

$excerpt = str_ireplace($keyword, '<em>'.$keyword_caseRetained.'</em>', $excerpt); 

$keyword_caseRetained = substr($keyword_caseRetained_all, 0, strlen($keyword)); 

이제 str_ireplace의 함수 내에서 그 변수를 사용, 위치 0에서 시작 키워드의 길이에 일어나 코드를 단축하려면 중첩하십시오.

또는 메소드로 문자열 조작 클래스에 추가하십시오.

0
  1. stripos()
  2. 텍스트의 N 문자 뒤에 텍스트 <span>에 삽입하여 문장 길이를 문구의 strlen()
  3. 찾기 발생을 가져 오기 (N 포인트 번호의 결과이다 2)
  4. 텍스트의 N 후 텍스트 </span>에 삽입 + M 문자 (N은 포인트 2의 결과이고 M은 포인트 1의 결과 임)
  5. 계속 포인트 2-4 (strpos()의 세 번째 파라미터 사용 - 오프셋)
관련 문제