2009-10-30 3 views
43

단어를 비교하려고합니다. 위와 아래의 단어는 서로 관련이 없습니다. 그러나 PHP가 동의하지 않는 것 같습니다! PHP를 단어의 대소 문자를 무시하는 방법을 무시하는 방법에 대한 아이디어가 있습니까?PHP에서 문자열을 비교할 때 대/소문자 구분을 무시합니다.

$arr_query_words = array("hat","Cat","sAt","maT"); 
// for each element in $arr_query_words - 
for($j= 0; $j < count($arr_query_words); $j++){ 

    // Split the $query_string on "_" or "%" : 
    $story_body = str_replace($arr_query_words[ $j ], 
     '<span style=" background-color:yellow; ">' . $arr_query_words[ $j ] . '</span>', 
       $story_body); 

// --- This ONLY replaces where the case [upper or lower] is identical -> 
} 

사례가 다른 경우에도 교체를 수행 할 수 있습니까?

+0

내가 업데이트 한 거짓, true를 돌려 strcasecmp 경우에만 어떤 너는 물어 보려했다! –

답변

69

사용 str_ireplace 대소 문자를 구별하지 않고 문자열이 교체 (str_ireplace는 PHP 5에서 가능) 수행 :

$story_body = str_ireplace($arr_query_words[$j], 
    '<span style=" background-color:yellow; ">'. $arr_query_words[$j]. '</span>', 
    $story_body); 

는, 문자열을 비교 소문자를 구별의 경우 사용하려면를 strcasecmp :

<?php 
$var1 = "Hello"; 
$var2 = "hello"; 
if (strcasecmp($var1, $var2) == 0) { 
    echo '$var1 is equal to $var2 in a case-insensitive string comparison'; 
} 
?> 
+3

잘 알고 계십시오 :) 저는 대소 문자를 구별하지 않기 위해 항상 strtolower ($ var1) == strtolower ($ var2)를 수행하고 있습니다 – Aishwar

+0

정확히 어떻게할까요? 일반적인 문자열 비교를 위해 필자는 항상 대소 문자를 구별하는 형제 'strcmp'를 사용합니다. PHP의 느슨한 입력에 대해서는 너무 조심할 수 없습니다. –

+4

비교 대상에 따라 후행 공백을 제거하기 위해 트림을 추가 할 수 있습니다. if (strcasecmp (trim ($ var1), trim ($ var2)) == 0) {} –

14

이것을 달성하는 가장 쉽고 가장 널리 지원되는 방법은 아마도 소문자 인 strin 과 같이, 그것들을 비교하기 전에 GS :

if(strtolower($var1) == strtolower($var2)) { 
    // Equals, case ignored 
} 

당신은이 기능을 달성하기 위해, 문자열이 비교되는 트림 단순히 같은 것을 사용할 수 있습니다

if(strtolower(trim($var1)) == strtolower(trim($var2))) { 
    // Equals, case ignored and values trimmed 
} 

희망이 도움이!

+1

strtolower 메서드가 매우 일반적이며 트림 제안이 유용합니다. 감사합니다. – Andrew

4
$var1 = "THIS is A teST"; 
$var2 = "this is a tesT"; 
if (strtolower($var1) === strtolower($var2)) { 
    echo "var1 and var2 are same"; 
} 

strtolower 문자열 난 항상 단지 소문자 문자를 대문자와 소문자 사이의 아스키 차이를 추가

-2

를 소문자로 변환합니다. 반환 strcasecmp

+2

영어 이외의 언어로는 작동하지 않습니다 ... – jou

0
!strcasecmp($str1, $str2) 

0 문자열은 대소 동등하다, 그래서 그들은이 사건을 무시 등호 경우! 희망 대답에 내 대답은 그렇지

http://php.net/manual/en/function.strcasecmp.php

+0

왜 이것이 downvoted인지 궁금합니다. –

+0

어쩌면 일부 순수 주의자는! 0을 선호하지 않습니다! = 0, 나는 그들 중 하나가 아니며 더 작은 코드를 선호합니다 : D –

관련 문제