Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1615 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Debutant - Comparaison de chaine de caractère

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Debutant - Comparaison de chaine de caractère

n°1234040
Sylver---
Not a geek. Just a human 2.0
Posté le 29-10-2005 à 12:09:03  profilanswer
 

Hello ;)
 
J'ai du texte dans la variable $text
Normalement, elle devrait être du type "(blablabla) xyz"
Si jamais c'est le cas, je dois recuperé ce qui est entre paranthese...
J'en suis à ça comme comparaison : ^(.*).* mais je ne sais pas comment le recuperer dans une variable... (je fais du php depuis hier :d )
 
Merci :)
 
:jap:

mood
Publicité
Posté le 29-10-2005 à 12:09:03  profilanswer
 

n°1234041
sielfried
Posté le 29-10-2005 à 12:11:38  profilanswer
 

preg_match
 
Mais ton masque est pas top. Pour commencer les parenthèses faut les échapper.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1234044
Sylver---
Not a geek. Just a human 2.0
Posté le 29-10-2005 à 12:14:32  profilanswer
 

Ha oui,
^[(].*[)].*
ou
^\(.*\).*
 
:??:

n°1234047
sielfried
Posté le 29-10-2005 à 12:19:22  profilanswer
 

La deuxième.
 
Mais il te faut aussi des parenthèses (non échappées donc) pour capturer ce que tu veux dans le masque.
 
Bref, jette un coup d'oeil à www.php.net/preg_replace. Et http://www.regular-expressions.info/ en passant.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1234050
Sylver---
Not a geek. Just a human 2.0
Posté le 29-10-2005 à 12:22:01  profilanswer
 

<?php
$subject = "(bonjour)"
$pattern = '^\(.*\).* ';
preg_match($pattern, $subject);
?>
 
Comment je peux recuperer bonjour alors ?
 
edit : : je n'avais pas vu ton message. Je vais lire les urls que tu m'as donné :)


Message édité par Sylver--- le 29-10-2005 à 12:23:37
n°1234063
Sylver---
Not a geek. Just a human 2.0
Posté le 29-10-2005 à 13:00:26  profilanswer
 

Bon, après avoir "tout" lu, je n'ai pas trouvé comment je pouvais faire pour recuperer dans une variable ce qui était entre paranthése...
Si je fais qqchose comme ça, ça peut marcher ?
<?php
$subject = "(bonjour)"
$pouet = '.*';
$pattern = '^\(($pouet)\).* ';
preg_match($pattern, $subject);
?>  
 
C'est peut être totalement stupide ;)
 
:jap:

n°1234069
shakpana
des fois, j'me demande ...
Posté le 29-10-2005 à 13:30:02  profilanswer
 

Sylver--- a écrit :

Bon, après avoir "tout" lu, je n'ai pas trouvé (...)


en fait sielfried t'as dis 2 choses :
 
1. echapper les parenthèses
2. mettre des parenthèses pour capturer le texte voulut
 
donc tu n'as pas bien tout lu ...
Edit : (en fait si qd même un peu !)
et surtout pas la doc de preg_match  :heink:  
 
il te faut un troisième paramètre qui sera la variable qui recupera ce qui a été trouvé par preg_match
donc pour l'exemple je transforme tes parenthèses en signe égal
 

Code :
  1. $matches = array();
  2. $subject = "=bonjour=";
  3. $pattern = '^=(.*)=^';
  4. if(preg_match($pattern, $subject, $matches))
  5. print_r ($matches);

et je te laisse adapter ça pour detecter les parenthèses dans ta chaine source, comprendre le rôle des parenthèses dans une regexp, et éventuellement optimiser le .*

Message cité 1 fois
Message édité par shakpana le 29-10-2005 à 13:32:33
n°1234076
Sylver---
Not a geek. Just a human 2.0
Posté le 29-10-2005 à 14:03:28  profilanswer
 


:jap:
Mais avant de lire ton post, j'avais en effet trouvé l'histoire des $matches. Je ne comprenais pas pourquoi ça ne marchait pas, mais il manquait le symbole ^ à la fin de mon expression regulière... je l'ai remarqué grâce à ton post :)
Mais je ne comprends pas pourquoi il faut le mettre en fin de ligne, il est bien censé modeliser le debut d'une ligne, non :??:
 
Mon code donne ça, et ça marche :)

Code :
  1. $matches = array();
  2. $subject = $liste[$j][2];
  3. $pattern = '^\((.*)\).*^';
  4. if (preg_match($pattern, $subject, $matches)) echo $matches[1];


 
Merci bien !
(mais partez pas trop loin, j'aurais ptet d'autres questions ;)
 
:jap:
 
edit : la balise code n'affiche pas les \ et si je les double il m'en affiche deux ! Joooooooooooooce  :fou:

Message cité 1 fois
Message édité par Sylver--- le 29-10-2005 à 14:05:24
n°1234084
shakpana
des fois, j'me demande ...
Posté le 29-10-2005 à 14:15:33  profilanswer
 

Sylver--- a écrit :

marchait pas, mais il manquait le symbole ^ à la fin de mon expression regulière... je l'ai remarqué grâce à ton post :)
Mais je ne comprends pas pourquoi il faut le mettre en fin de ligne, il est bien censé modeliser le debut d'une ligne, non :??:


oui, en fait, c'est moi qui l'ai employé à tort ...
^ indique le début du sujet, ou c'est une 'assertion' de début de ligne en mode multiligne, dixit la doc.
donc j'aurai plutôt dû faire un
$pattern = '/\((.*)\)/';
ce qui est plus général, autant pour moi ...
 

Sylver--- a écrit :

edit : la balise code n'affiche pas les \ et si je les double il m'en affiche deux ! Joooooooooooooce  :fou:


"bug" du bbCode de HFR  :(  

n°1234117
sielfried
Posté le 29-10-2005 à 15:42:00  profilanswer
 

Ton truc marche mais si jamais tu as une chaîne du genre :
"(blablabla) truc(chose)machin"
 
Alors ton masque te renverra "blablabla) truc(chose" et non "blablabla".
 
Pour éviter ça, remplace le .* par un [^\)]*


Message édité par sielfried le 29-10-2005 à 15:42:14

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
mood
Publicité
Posté le 29-10-2005 à 15:42:00  profilanswer
 

n°1234169
Sylver---
Not a geek. Just a human 2.0
Posté le 29-10-2005 à 18:05:47  profilanswer
 

ok :)
 
Merci :jap:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Debutant - Comparaison de chaine de caractère

 

Sujets relatifs
aide à la réalisation d'un projet (niv débutant)[ Débutant ] Erreur d'exécution en Javascript
[résolu]Menus - Question de débutantcompter le nombre de fois que le mot est dans une chaine de caractére:
XSL-FO un caractère sur chaque nouvelle ligne[SQL*PLUS] Probleme avec caractere special & dans requete SQL
[débutant] différence Windows Forms et asp.netDate format chaine de caractere
Plus de sujets relatifs à : Debutant - Comparaison de chaine de caractère


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR