probleme avec preg_match

Le
Thief13
Bonjour à tous !

Voilà, j'ai un petit probleme avec preg_match :
En fait, je m'en sert pour verifier qu'une chaine est dans une autre, et
dans le cas qui me pose probleme, je cherche la chaine contenu dans
$_SESSION['profil'] dans la chaine $infos_vue['profils_autorises'].

voici mon test :

if (preg_match($_SESSION['profil'], $infos_vue['profils_autorises'])
false)
{
return false;
}

$_SESSION['profil'] contient 'RPC_RT' et
$infos_vue['profils_autorises'] contient 'gqsd'

cette méthode à toujours bien marché jusqu'ici, mais dans ce cas, je me
retrouve avec un beau :

Warning: preg_match() [function.preg-match]: Delimiter must not be
alphanumeric or backslash in D:[]fonctions.php on line 817

j'ai bien essayé de lire la doc de preg_match, mais je doit être un gros
boulet, car ça ne m'a pas vraiment avancé

Je vous remerci d'avance pour votre aide ^^
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
CrazyCat
Le #22735
Thief13 wrote:
$_SESSION['profil'] contient 'RPC_RT' et
$infos_vue['profils_autorises'] contient 'gqsd'
Warning: preg_match() [function.preg-match]: Delimiter must not be
alphanumeric or backslash in D:[...]fonctions.php on line 817


$_SESSION['profil'] est censé être un pattern, or cette variable ne
contient pas les délimiteurs autorisés.
tu devrais donc utiliser '/'.$_SESSION['profil'].'/' ou utiliser autre
chose que preg_match(), par exemple strpos()

--
Discussions et débats sur l'actualité: http://www.sujets-d-actu.eu
Réseau IRC Francophone: http://www.crazy-irc.net

Thief13
Le #22737
Bon, j'ai toujours pas compris pourquoi ça ne marche pas, mais en
désepoire de cause, je me suis vraiment replongé dans la doc, et j'ai
trouvé ça :

"N'utilisez pas preg_match() si vous voulez uniquement savoir si une
chaine est contenue dans une autre. Utilisez dans ce cas les fonctions
strpos() ou strstr(), qui sont beaucoup plus rapides."

Et oui, boulet inside XD

Donc, bon, je vais essayer de voir avec strstr()

Par contre, plusieurs choses :

- Si quelqu'un pouvais quand même m'expliquer ou je me plantais, ça me
permettrait de mieux comprendre, merci d'avance pour son aide

- J'ai à coté de moi un collegue qui m'affirme que strpos() peut
chercher une chaine de caractere dans une autre chaine, cepandant, la
doc a l'air assé claire :

"strpos — Trouve la position d'un caractère dans une chaine"

Qu'en est il ? strpos serait il plus indiqué que strstr dans mon cas ?
peut il vraiment chercher plus qu'un caractere ?

Merci d'avance !
Thief13
Le #22731
tu devrais donc utiliser '/'.$_SESSION['profil'].'/' ou utiliser autre
chose que preg_match(), par exemple strpos()



Super, merci !

CrazyCat
Le #22732
Thief13 wrote:
"strpos — Trouve la position d'un caractère dans une chaine"


Extrait de la doc:
Contrairement à la fonction strrpos() avant PHP 5, celle-ci peut prendre
une chaîne de caractères complète comme paramètre needle et cette chaîne
sera utilisée en totalité.

--
Discussions et débats sur l'actualité: http://www.sujets-d-actu.eu
Réseau IRC Francophone: http://www.crazy-irc.net

bmayer
Le #22733
- J'ai à coté de moi un collegue qui m'affirme que strpos() peut
chercher une chaine de caractere dans une autre chaine, cepandant, la
doc a l'air assé claire :

"strpos - Trouve la position d'un caractère dans une chaine"
Oulah, lisez (toi et ton collegue) MIEUX la doc.

"strpos - Trouve la position d'UN CARACTERE dans une chaine"
strstr() va, elle, trouver une chaine dans une autre


Qu'en est il ? strpos serait il plus indiqué que strstr dans mon cas ?
peut il vraiment chercher plus qu'un caractere ?

Merci d'avance !
de rien


bmayer
Le #22734
On 2 août, 11:39, Thief13
Bon, j'ai toujours pas compris pourquoi ça ne marche pas, mais en
désepoire de cause, je me suis vraiment replongé dans la doc, et j'ai
trouvé ça :

"N'utilisez pas preg_match() si vous voulez uniquement savoir si une
chaine est contenue dans une autre. Utilisez dans ce cas les fonctions
strpos() ou strstr(), qui sont beaucoup plus rapides."

Et oui, boulet inside XD

Donc, bon, je vais essayer de voir avec strstr()

Par contre, plusieurs choses :

- Si quelqu'un pouvais quand même m'expliquer ou je me plantais, ça me
permettrait de mieux comprendre, merci d'avance pour son aide

- J'ai à coté de moi un collegue qui m'affirme que strpos() peut
chercher une chaine de caractere dans une autre chaine, cepandant, la
doc a l'air assé claire :

"strpos - Trouve la position d'un caractère dans une chaine"

Qu'en est il ? strpos serait il plus indiqué que strstr dans mon cas ?
peut il vraiment chercher plus qu'un caractere ?

Merci d'avance !


Strpos() retourne la position d'UN caractere, pas d'une chaine.
Dans ton cas, strstr() est ton amie.

Antoine Polatouche
Le #22730
On 2 août, 11:39, Thief13
Qu'en est il ? strpos serait il plus indiqué que strstr dans mon cas ?
peut il vraiment chercher plus qu'un caractere ?



Strpos() retourne la position d'UN caractere, pas d'une chaine.
Dans ton cas, strstr() est ton amie.


et dans la doc pour strstr():
Note: If you only want to determine if a particular needle occurs within
haystack, use the faster and less memory intensive function strpos()
instead.

Quant à savoir si strpos permet de chercher une chaîne, en cas de doute,
il est plus rapide de faire un test en php que de suivre un fil de
discussion ;-)

echo("strpos('pilepoilpaille','pa') -> ".strpos('pilepoilpaille','pa'));


Thief13
Le #22248
Oulah, lisez (toi et ton collegue) MIEUX la doc.
"strpos - Trouve la position d'UN CARACTERE dans une chaine"
strstr() va, elle, trouver une chaine dans une autre


Bin, c'est exactement ce que je me disait, mais en fait, non, ça marche
avec une chaine, et super bien d'ailleur ^^ j'ai eu beau tester dans
tout les sens, ça marche

bmayer
Le #22249
Bonjour a tous !

"strpos - Trouve la position d'un caractère dans une chaine"


Extrait de la doc:
Contrairement à la fonction strrpos() avant PHP 5, celle-ci peut prendre
une chaîne de caractères complète comme paramètre needle et cette chaîne
sera utilisée en totalité.
Mouais

Et le jour ou ton aplli tourne sur une config avec du PHP + ancien ?

Discussions et débats sur l'actualité:http://www.sujets-d-actu.eu
Réseau IRC Francophone:http://www.crazy-irc.net



Thief13
Le #22250
Extrait de la doc:
Contrairement à la fonction strrpos() avant PHP 5, celle-ci peut prendre
une chaîne de caractères complète comme paramètre needle et cette chaîne
sera utilisée en totalité.



Ok, donc là, si ça marche avec strpos, c'est parce qu'on est en php5,
mais si on fait tourner le script sur du 4, ça va foirer...

Publicité
Poster une réponse
Anonyme