objectifweb Posté 15 Septembre 2006 Posté 15 Septembre 2006 Bonjour, j'ai un problème curieux, je cherche à faire tourner un script en php sur un serveur php4 qui me donne une erreur et en cherchant l'erreur sur mon ami gg, je lis que probablement le script est prévu pour du php5, mais que dois-je modifier pour qu'il tourne en php4 ? <?phpclass cTypoGenerator{ static $keyboard = array( '1' => array( '2', 'q' ), '2' => array( '1', 'q', 'w', '3' ), '3' => array( '2', 'w', 'e', '4' ), '4' => array( '3', 'e', 'r', '5' ), '5' => array( '4', 'r', 't', '6' ), '6' => array( '5', 't', 'y', '7' ), '7' => array( '6', 'y', 'u', '8' ), '8' => array( '7', 'u', 'i', '9' ), '9' => array( '8', 'i', 'o', '0' ), '0' => array( '9', 'o', 'p' ), '-' => array( '0', 'p' ), 'q' => array( '1', '2', 'w', 'a' ), 'w' => array( 'q', 'a', 's', 'e', '3', '2' ), 'e' => array( 'w', 's', 'd', 'r', '4', '3' ), 'r' => array( 'e', 'd', 'f', 't', '5', '4' ), 't' => array( 'r', 'f', 'g', 'y', '6', '5' ), 'y' => array( 't', 'g', 'h', 'u', '7', '6' ), 'u' => array( 'y', 'h', 'j', 'i', '8', '7' ), 'i' => array( 'u', 'j', 'k', 'o', '9', '8' ), 'o' => array( 'i', 'k', 'l', 'p', '0', '9' ), 'p' => array( 'o', 'l', '0' ), 'a' => array( 'z', 's' , 'w', 'q' ), 's' => array( 'a', 'z', 'x', 'd', 'e', 'w' ), 'd' => array( 's', 'x', 'c', 'f', 'r', 'e' ), 'f' => array( 'd', 'c', 'v', 'g', 't', 'r' ), 'g' => array( 'f', 'v', 'b', 'h', 'y', 't' ), 'h' => array( 'g', 'b', 'n', 'j', 'u', 'y' ), 'j' => array( 'h', 'n', 'm', 'k', 'i', 'u' ), 'k' => array( 'j', 'm', 'l', 'o', 'i' ), 'l' => array( 'k', 'p', 'o' ), 'z' => array( 'x', 's', 'a' ), 'x' => array( 'z', 'c', 'd', 's' ), 'c' => array( 'x', 'v', 'f', 'd' ), 'v' => array( 'c', 'b', 'g', 'f' ), 'b' => array( 'v', 'n', 'h', 'g' ), 'n' => array( 'b', 'm', 'j', 'h' ), 'm' => array( 'n', 'k', 'j' ) );}echo "test";?> L'erreur générée est PHP Parse error: parse error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /home/.../monscript.php on line 4, referer: http://... En vous remerciant Amicalement Patrick
dièse Posté 15 Septembre 2006 Posté 15 Septembre 2006 (modifié) <?phpclass cTypoGenerator{ var keyboard = array( ... Modifié 15 Septembre 2006 par dièse
objectifweb Posté 15 Septembre 2006 Auteur Posté 15 Septembre 2006 Merci Diese, je suis une larve Je croyais en être sorti, j'ai donc ajouté la première fonction function getWrongKeyTypos( $word ) { $word = strtolower( $word ); $typos = array(); $length = strlen( $word ); for( $i = 0; $i < $length; $i++ ) { if( cTypoGenerator::$keyboard[$word{$i}] ) { $tempWord = $word; foreach( cTypoGenerator::$keyboard[$word{$i}] as $char ) { $tempWord{$i} = $char; array_push( $typos, $tempWord ); } } } return $typos; } Il me génère encore une erreur sur la ligne if( cTypoGenerator::$keyboard[$word{$i}] ) PHP Parse error: parse error, unexpected ')', expecting '(' in /home/.../monscript.php on line 57, referer: http://../ Je suppose que c'est la façon d'appeller la fonction dans la classe qui ne convient pas, mais déjà que je n'ai pas l'habitude des classes en PHP4, je vais devoir m'y mettre pour le php5 En te remerciant de ta première réponse. Amicalement Patrick
objectifweb Posté 15 Septembre 2006 Auteur Posté 15 Septembre 2006 Qu'essaies-tu de faire avec "$word{$i}" ? C'est un script qu'on m'a donné, mais si je comprends bien le fonctionnement général, je donne un mot 'test' par exemple et toutes ces fonctions me donnent les divers fautes de frappe possibles. $word contient donc mon mot 'test' et cette fonction prend chaque lettre contenue dans $word donc $word{$i} puisque $i est une variable qui boucle lettre par lettre, pour aller chercher une correspondance dans $keyboard dans ma classe Heu j'ai été clair ? Patrick
dièse Posté 15 Septembre 2006 Posté 15 Septembre 2006 (modifié) $talettre = $word{$i}; foreach( cTypoGenerator::$keyboard[$talettre] as $char ) Peut-être, mais je ne suis vraiment pas sûr . En tout cas ton appel à ton tableau $keyboard est bon. Edit : après recherche le problème vient peut-être de l'utilisation des accolades sur tes chaines de caractères qui serait obsolète, même en PHP4 :/. Essaie avec des crochets Modifié 15 Septembre 2006 par dièse
objectifweb Posté 15 Septembre 2006 Auteur Posté 15 Septembre 2006 Merci, j'ai encore tenté un truc en plus en mettant également dans le if, je n'ai plus d'erreur mais la fonction ne donne rien. Le petit bout de code suivant complet <?phpclass cTypoGenerator{ var $keyboard = array( '1' => array( '2', 'q' ), '2' => array( '1', 'q', 'w', '3' ), '3' => array( '2', 'w', 'e', '4' ), '4' => array( '3', 'e', 'r', '5' ), '5' => array( '4', 'r', 't', '6' ), '6' => array( '5', 't', 'y', '7' ), '7' => array( '6', 'y', 'u', '8' ), '8' => array( '7', 'u', 'i', '9' ), '9' => array( '8', 'i', 'o', '0' ), '0' => array( '9', 'o', 'p' ), '-' => array( '0', 'p' ), 'q' => array( '1', '2', 'w', 'a' ), 'w' => array( 'q', 'a', 's', 'e', '3', '2' ), 'e' => array( 'w', 's', 'd', 'r', '4', '3' ), 'r' => array( 'e', 'd', 'f', 't', '5', '4' ), 't' => array( 'r', 'f', 'g', 'y', '6', '5' ), 'y' => array( 't', 'g', 'h', 'u', '7', '6' ), 'u' => array( 'y', 'h', 'j', 'i', '8', '7' ), 'i' => array( 'u', 'j', 'k', 'o', '9', '8' ), 'o' => array( 'i', 'k', 'l', 'p', '0', '9' ), 'p' => array( 'o', 'l', '0' ), 'a' => array( 'z', 's' , 'w', 'q' ), 's' => array( 'a', 'z', 'x', 'd', 'e', 'w' ), 'd' => array( 's', 'x', 'c', 'f', 'r', 'e' ), 'f' => array( 'd', 'c', 'v', 'g', 't', 'r' ), 'g' => array( 'f', 'v', 'b', 'h', 'y', 't' ), 'h' => array( 'g', 'b', 'n', 'j', 'u', 'y' ), 'j' => array( 'h', 'n', 'm', 'k', 'i', 'u' ), 'k' => array( 'j', 'm', 'l', 'o', 'i' ), 'l' => array( 'k', 'p', 'o' ), 'z' => array( 'x', 's', 'a' ), 'x' => array( 'z', 'c', 'd', 's' ), 'c' => array( 'x', 'v', 'f', 'd' ), 'v' => array( 'c', 'b', 'g', 'f' ), 'b' => array( 'v', 'n', 'h', 'g' ), 'n' => array( 'b', 'm', 'j', 'h' ), 'm' => array( 'n', 'k', 'j' ) ); function getWrongKeyTypos( $word ) { $word = strtolower( $word ); $typos = array(); $length = strlen( $word ); echo "<br>Longueur:".$length; for( $i = 0; $i < $length; $i++ ) { $talettre = $word{$i}; echo "<br>(".$talettre.")"; echo "<br>(".$i.")"; if( cTypoGenerator::$keyboard($talettre) ) { $tempWord = $word; foreach( cTypoGenerator::$keyboard($talettre) as $char ) { $tempWord{$i} = $char; array_push( $typos, $tempWord ); } } } return $typos; }}echo "le formulaire contient " . $_POST['word'];$word = $_POST['word'];$typos = array();$typos = cTypoGenerator::getWrongKeyTypos( $word );foreach ($typos as $value){ $sign1.= "$value,";}echo "sign1 ".$sign1;?> Comme tu vois, j'ai affiché quelques variables pour voir ... j'ai testé le mot 'ecole' $length est bien égale à 5 Mais ma boucle commence à 0 et s'arrête .... le formulaire contient ecoleLongueur:5(e)(0) Donc déjà dans ma boucle un truc ne va pas, et pourtant cela m'a l'air correct ? Amicalement atrick
dièse Posté 15 Septembre 2006 Posté 15 Septembre 2006 (modifié) Utilise le mot réservé self pour faire appel static à une variable ou une méthode de ta classe courante if( self::$keyboard($talettre) ) Modifié 15 Septembre 2006 par dièse
objectifweb Posté 15 Septembre 2006 Auteur Posté 15 Septembre 2006 Utilise le mot réservé self pour faire appel static à une variable ou une méthode de ta classe courante if( self::$keyboard($talettre) ) Hélas, ca ne change rien ... on dirait que l'appel à la variable de la classe vire $i...et la boucle s'arrête Merci quand même Pat
dièse Posté 15 Septembre 2006 Posté 15 Septembre 2006 (modifié) Dernières corrections avant d'aller me coucher, je suis creuvé j'arrive plus du tout à réfléchir... mais il y avait une erreur dans le dernier bout de code que je t'ai donné, ça m'embête un peu for( $i = 0; $i < $length; $i++ ) { $talettre = $word{$i}; if( self::$keyboard[$talettre] ) { $tempWord = $word; foreach( self::$keyboard[$talettre] as $char ) { $tempWord[$i] = $char; array_push( $typos, $tempWord ); } } } bonne nuit (ou bon courage plutôt ) Modifié 15 Septembre 2006 par dièse
objectifweb Posté 15 Septembre 2006 Auteur Posté 15 Septembre 2006 J'avais fais également la correction pour le 2eme self, ca changeait rien ... Bon tans pis, merci de ton aide et je te souhaite la bonne nuit, je vais abandonner pour ce soir également Amicalement Patrick allez, je post une dernière avant d'aller coucher je viens d'enlever le bout de code suivant if( self::$keyboard($talettre) ) { $tempWord = $word; foreach( self::$keyboard($talettre) as $char ) { $tempWord{$i} = $char; array_push( $typos, $tempWord ); } } du coup le résultat de ma boucle est bon ... le formulaire contient ecoleLongueur:5(e)(0)(c)(1)(o)(2)(l)(3)(e)(4)sign1 Il y a donc bien quelque chose dans le bout de code qui fait merder la boucle..... argh le php5 quel poisse Quand je pense qu'en acceptant le script, je me suis dit que ce serait un jeu d 'enfant de le faire tourner en php4 Amicalement Patrick
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant