2010-07-13 2 views
1

로컬 테스트 서버에서는 작동하지만 어떤 이유로 라이브 서버에서는 정상적으로 작동하는 코드 조각이 있습니다. 라이브 서버의 PHP 버전은 5.1.6입니다.PHP 일치하는 단어 코드가 PHP에서 작동하지 않습니다 5.1.6

$subject = 'random words to check'; 
$terms = explode(' ', 'word1 word2 check'); 
$wordIndex = array_flip(preg_split('/\P{L}+/u', mb_strtolower($subject), -1, PREG_SPLIT_NO_EMPTY)); 
foreach ($terms as $term) { 
    if (isset($wordIndex[$term])) { 
     echo "match>".$term; 
    } 
} 
+0

당신은 정말 더 디버깅해야합니다. 몇 줄의 코드와 함수 호출이 있으면 작동하지 않는다고 말하는 것은 충분하지 않습니다. – zaf

+0

이 질문에 대한 답변을하지 않지만 가능한 경우 PHP 버전을 업데이트 할 수 있습니다. PHP 5.1.6은 거의 4 살이기 때문에 4 년간의 기능 추가/개선 및 버그 수정을 놓치고 있습니다. – Aistina

답변

0

우선 고용 덤프 preg_split

  • 의 출력을 덤프 덤프 각 시스템

    • 에 무슨 일이 일어나고 있는지 array_flip
    의 출력을 mb_strtolower
  • 의 출력을 발견 할 수있는 몇 가지 기본적인 디버깅
  • +0

    preg_split의 출력이 비어 있습니다. – Jack

    0

    preg_split을

    로 바꿀 수도 있습니다. 당신이 멀티 바이트 문자열로 작업하는 경우 str_word_count에 대한 추가 셋째 매개 변수도 필요할 수 있지만
    $wordIndex = array_flip(str_word_count(mb_strtolower($subject), 2)); 
    

    관련 문제