begin process at 2012 05 30 16:23:57
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive PHP

 > 

Archives

 > 

AU SECOURS !!!

 > 

Masque pour preg_match() ... Aidez-moi !


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Masque pour preg_match() ... Aidez-moi !

samedi 15 novembre 2003 à 08:05:36 | Masque pour preg_match() ... Aidez-moi !

LocalStone

Alors, j'expose le problème :
J'ai 1 fichier texte qui contient des ligne du style :
0004 - Chu Chu Rocket (J)

Donc le masque approprié pour séparer les éléments, c'est :
$masque = '/(.*) - (.*) (.*)/'

Le problème, c'est que ça marche si c'est sous la forme précédente, mais si j'ai quelque chose comme ça :
0000 - un titre - avec un tiret (U)

Et bien, y a tout qui foire parce que le compilateur se trompe de tiret ...
J'en ai marre, ça fait plein de fois que j'ai ce problème et je ne trouve pas de solution !
Aidez-moi ... Snif !
LocalStone
samedi 15 novembre 2003 à 13:17:24 | Re : Masque pour preg_match() ... Aidez-moi !

LocalStone

Allez, aidez moi ! S'il vous plait ...
LocalStone
samedi 15 novembre 2003 à 15:32:05 | Re : Masque pour preg_match() ... Aidez-moi !

Tomcube

<?
$maligne = "0000 - un titre - avec un tiret (U)";
// par exemple avec la ligne là

$numero = substr($maligne,0,4);
$texte = substr($maligne,7);

?>

Normalement ça devrait marcher parce qu'à mon avis, tes chiffres à gauche ne vont jamais dépasser 4 chiffres. Tu l'a prévenu en mettant "0004" au lieu de "4"

samedi 15 novembre 2003 à 17:27:40 | Re : Masque pour preg_match() ... Aidez-moi !

LocalStone

Oui, c'est vrai que cette solution est envisageable ... Mais même, je ne comprends pas pourquoi ce putain de masque ne fonctionne pas ... Parce que ta solution convient parfaitement pour ce cas, mais par exemple, pour parser l'HTML en PHP et si tu as 2 balises identiques sur la même ligne, ça ne marche pas ... Merci quand même, je vais utiliser ta solution.
LocalStone
mercredi 19 novembre 2003 à 22:23:34 | Re : Masque pour preg_match() ... Aidez-moi !

str

Salut,

Ton problème est tout à fait normal.

Le problème que tu as dans ton deuxième exemple est le même que dans le premier.

Explications :

Dans le premier exemple, php arrive à satisfaire la première partie du masque. Il ne peux donc pas retourner d'erreur bien que la présence de plusieurs espace ne lui permette pas de satisfaire la seconde partie du masque.

Dans le second exemple, php n'arrive pas à satisfaire le masque parce qu'il ne peux pas sélectionner un seul des deux tirets.

Il suffit donc que tu utilise des options comme "Uis" par exemple pour faire un masque que tu peux satisfaire.

Après, il faut juste savoir ce que tu veux exactement séparer.

A partir de ça : 0004 - Chu Chu Rocket (J)

si tu veux "0004" et "Chu Chu Rocket (J)" je te conseil d'utiliser la fonction explode avec le masque " - "

si tu veux "0004" et "Chu Chu Rocket" et "(J)" alors là, ça se complique et à cause des espaces, tu va te trouver face à des erreurs à chaque nouvel éléments que tu ne prendra pas en compte dans ton masque comme le point d'intérogation, le point, etc...

Le tiret étant fréquement utilisé dans les caractères de texte, je te conseil le "pipe" | ou "double pipe" || comme séparateur. C'est moins commun et tu peux le remplacer par un autre caractère dans l'éventualité ou il serait insérer dans une ligne de ton fichier (assez rare). C'est une solution qui t'évitera pas mal de désaggréments et te permettra de te faire la main sur les masques.

Les masques et les expressions régulières en général sont très pratiques mais seront plus rapidement exécutées en PERL.

sEe YoU

[StR]
jeudi 20 novembre 2003 à 13:02:46 | Re : Masque pour preg_match() ... Aidez-moi !

Tomcube

Ouais, là tu traite le problème à la base, ce qui est très bien. Le tiret étant en effe très commun mieux vaut utiliser les pipes ou l'arobase. Par contre, si son fichier contient déjà 2000 entrées comme celles-ci, je le voit mal changer toutes ces entrées avec une double pipe ou un arobase !
Au fait, est-ce que t'as testé ma solution ?
vendredi 21 novembre 2003 à 17:51:52 | Re : Masque pour preg_match() ... Aidez-moi !

LocalStone

Oui ! C'est un peu barbare mais ça à le merite de marcher. J'ai fais la même chose pour la langue puisqu'elle aussi reste invariable. Merci !
LocalStone


Cette discussion est classée dans : problème, code, masque, preg, match


Répondre à ce message

Sujets en rapport avec ce message

Métacaractères... [ par mfaraday ] Salut...Est-ce que quelqu'un pourrait m'expliquer comment utiliser les métacaractères dans un profil de recherche pour la fonction preg_match par exem Problème avec preg_match_all [ par Bountard ] Salut à tous, j'ai un petit problème avec l'utilisation de preg_match_all. Pour faire plus simple voila mon bout de code d'essai :   $html = ' un Problème avec preg_match_all [ par nisaloncaje ] BonjourJe comptais utiliser la fonction preg_match_all afin d'extraire d'une chaine caractère les sous chaines contenues entre 2 balises ([yt] et  [/y problème preg_match ou autre [ par mike1310 ] Bonjour à tous,je suis en train de me créer un moteur de template simple et j'aimerais faire, à l'aide d'un preg_match ou autre, récupérer dans ma pag preg_match_all [ par Kloyd ] Bonjour j'aimerais recuperer à l'aide d'un Preg match all hors du code ci-dessous: [code=html] <img Requette SQL => UPDATE problème [ par Nodoka ] Bonjours, Voilà mon problème, ma fonction UPDATE ne fonctionne pas, j'essaye de comprendre mais je ne vois pas d'ou viens le soucis. Mon cas est simp Expression régulière balaise [ par rekam ] Bonjour! Je cherche depuis un moment un moyen de faire une expression régulière pour résoudre ce genre de cas: [code=php] du texte divers {une_strin Problème import fichier LOAD DATA... [ par Youss22 ] Bonjour à tous, Je me retourne vers vous concernant un problème d'importation de fichier csv dans une table, après avoir retourné le problème dans le Problème de débutant avec variable get etc ... [ par jimyarts ] Bonjour à toute la communauté, J'ai un problème qui m'embête vraiment dans la construction de mon site d'autant plus que je n'en connais pas la cause


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,593 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales