2010-07-13 28 views
1

J'ai un morceau de code qui fonctionne bien sur mon serveur de test local mais sur un serveur live pour une raison quelconque. La version de PHP sur le serveur de phase est 5.1.6.Php Le code des mots ne fonctionne pas sur 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

Vous devez vraiment déboguer plus. Avoir plusieurs lignes de code et des appels de fonction, dire que ça ne marche pas n'est pas assez bon. – zaf

+0

Cela ne répond pas à votre question, mais si possible, vous voudrez peut-être mettre à jour votre version de PHP; PHP 5.1.6 a presque 4 ans, ce qui signifie que vous avez raté 4 ans d'ajouts/améliorations de fonctionnalités et de corrections de bugs. – Aistina

Répondre

0

premier emploi un peu de débogage de base pour découvrir ce qui se passe sur chaque système

  • vider la sortie de mb_strtolower
  • vider la sortie de preg_split
  • vider la sortie de array_flip
+0

La sortie de preg_split est vide – Jack

0

Vous pourriez essayer de remplacer votre preg_split avec

$wordIndex = array_flip(str_word_count(mb_strtolower($subject), 2)); 

Bien que vous pouvez aussi avoir besoin du paramètre 3 supplémentaire pour str_word_count si vous travaillez avec des chaînes multi-octets