Aller au contenu

Probleme affichage regex chaine


Sujets conseillés

Posté

Bonjour à toutes et à tous,

Je sui graphiste et commence tout juste à m'intéresser au expressions régulières car j'en ai besoin pour un client.

(bref la programmation n'est pas mon fort).

Je voudrais n'afficher d'une chaine que ce qui se trouve avant un point (le . de la ponctuation).

Je fais donc :

$reg = '/^(.+?)[.].*$/';
$str = "a. b";
print_r (preg_replace($reg, '$1', $str));

Et cela marche : je n'ai que le a qui s'affiche.

Maintenant je voudrais n'afficher que ce qui se trouve après ce point (le B) : et c'est là que je sèche.

comment modifier ? :

$reg = '/^(.+?)[.].*$/';

Si quelqu'un voulait me répondre ça serait sympa...

sandy.

Posté

Salut,

Perso, j'aurais plutot fait comme ca :

$str = 'a. b. c. d. e. f';

$Liste = explode('.', $str);

for ($i=0;$i<count($Liste);$i++){

print $Liste[$i] . "<br>";

}

après tu peux traiter chaque élément comme tu veux dans ta boucle...

Bon courage !

Posté

Si tu veux continuer d'utiliser ton expression régulière, il va falloir ajouter un second jeu de parenthèses (Ce sont elles qui "capturent" les morceaux de texte que tu peux réutiliser).



$reg = '/^(.+?)[.](.*)$/';
$str = "a. b";
echo(preg_replace($reg, '$1', $str));
echo(preg_replace($reg, '$2', $str));

Mais comme l'a fait remarquer BlackPage, pour séparer simplement des chaînes de caractères quand il y a un motif simple de séparation, explode() est tout indiqué.

PS : echo() me semble plus approprié dans le code que print_r() : echo() est destiné à une chaîne de caractères, et print_r() à un tableau ou un objet.

Posté

Merci à tous les 2.

Ta solution, captain-torche, me convient à merveille !

C'était tout simple en fait.

Je commence tout juste à apprendre les expressions régulières.

Merci encore à toi.

Bonne journée.

Sandy.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...