Post by YBMPost by Jean Francois OrtoloBonjour
J'aurais besoin de reconnaître la chaîne de caractère : "---" dans une
chaîne de caractères.
Je pense faire celà avec la fonction preg_match().
La chaîne $str ne contient jamais de caractère #.
if(preg_match("#^---$#", $str))
Peu importe si la chaîne contient ou non des '#'. Par convention
preg_match attent une chaîne contenant une expression régulière
délimitée par un caractère quelconque (ou presque) où une des
caractères appariés comme ( ) ou { } etc. Ces caractère ne font
PAS partie de l'expression régulière.
C'est quand /l'expression régulière/ contient ce caractère de
délimitation (par exemple / - slash) que c'est embêtant et que
l'on en prend un autre.
preg_match("{^---$}", $str)
Post by Jean Francois OrtoloCette fonction va-t-elle rendre : true si ce qui est contenu dans $str,
est uniquement la chaîne : --- , et false autrement ?
Oui ou presque, si la chaîne est ---\n (\n=fin de ligne ascii) elle
renverra 1 (et non true, mais c'est pareil pour le if) aussi.
Post by Jean Francois Ortoloif(preg_match("#\-\-\-$#", $str))
tu as oublié l'ancre ^ j'imagine.
^---$ est identique à ^\-\-\-$, tu y protège le tiret mais dans
ce contexte c'est inutile.
Post by Jean Francois OrtoloLa fonction preg_match() , interprète-t-elle toujours son premier
paramètre, comme une regex, et en particulier dans ce cas, la première
syntaxe peut-elle convenir ?
ton "autrement dit" m'inquiète: ça n'a aucun rapport avec la choucroute.
Le premier paramètre de preg_match est une chaîne contenant une regexp
délimitée.
En cas de doute, il n'y a pas de mal à faire des essais (ici sous
$ cat test.php
<?php
$re = '{^---$}';
echo preg_match($re,'---'),"\n";
echo preg_match($re,"---\n"),"\n";
$re = '{^\-\-\-$}';
echo preg_match($re,'---'),"\n";
echo preg_match($re,"---\n"),"\n";
?>
$ php test.php
1
1
1
1
Bonjour Monsieur
Merci beaucoup de votre réponse.
Je ne savais pas pour les caractères délimiteurs { et }
En ce qui me concerne, j'ai pris toutes les précautions pratiques,
pour que les chaînes ne contiennent pas le caractère # ( ni le saut de
ligne \n ).
Normalement, mon script est prêt.
C'est un script très compliqué, une vraie usine à gaz de 25190 lignes
de php en mode iso, mais avant le 31 décembre 2011, il fonctionnait
normalement.
Depuis le 1er Janvier 2012, ce script, qui me sert à enregistrer les
paris gagnés des courses à événements avec les pronostics de mon site (
nouvelle version, j'ai remis l'ancienne version sur mon site
www.pronostics-courses.fr ), ne détecte plus aucun Multi en 7 ou en 6
chevaux gagnés, alors que l'ancienne version en détecte.
Je suis en train de débugguer, et jusqu'à présent ( ce matin ), j'ai
changé tous les caractères séparateurs des regex ( type PCRE ), de / en #
En effet, j'avais fait la faute classique, où certaines chaînes de
caractères, contenaient ce caractère /
J'ai vérifié qu'il n'y avait aucune erreur lors de la modification.
Je n'ai pas beaucoup espoir de réparer ce script, ni d'identifier
l'erreur, vu sa complexité... ;(
En dernier recours, je mettrai la base de données de mon site sur mon
ordinateur, puis je tracerai.
Bien amicalement.
Jean François Ortolo