Services : Actualité Emploi Blog Forum Flux
Formation Trafic : Référencement Liens sponsorisés Affiliation Ecommerce Nom de domaine E-réputation Marketing Mobile Black Hat
Formation Technique : Performance Web Html Css Sql Curl Asp Dotnet Php Ajax Wordpress Twitter Google Analytics

Forum Oseox
Oseox

Expressions régulières et PHP

Forum Référencement et Trafic
Nous sommes le Ven 23 Fév 2018 20:55

Heures au format UTC [ Heure d’été ]




Poster un nouveau sujet Répondre au sujet Aller à la page 1, 2  Suivante
Auteur Message
MessagePosté: Lun 17 Aoû 2009 14:37 
Hello,

J'ai un soucis général avec les expressions régulières : j'y comprends jamais rien.
Du coup là j'ai un soucis en particulier :
Je reçoit une chaîne de caractère qui peut contenir R°, dans ce cas je veux transformer R° en Recto.
La même chose pour V° qui doit devenir Verso.

J'ai repris ça sur php.net :
Code:
$patterns[0]='/R°/';
$patterns[1]='/V°/';
$replacements[0]='Recto';
$replacements[1]='Verso';
$valeur=preg_replace($patterns, $replacements, $valeur);


Mais ça ne passe pas, il reconnait pas le caractère °.


Avez-vous une solution ?

Merci


Haut
 Profil Envoyer un e-mail  
 
MessagePosté: Lun 17 Aoû 2009 15:48 
Avatar de l’utilisateur
Il faut échapper l'étoile * qui est caractère spécial

Ce qui donne \*

;)

http://fr.wikipedia.org/wiki/Expression_rationnelle


Haut
 Profil Envoyer un e-mail  
 
MessagePosté: Lun 17 Aoû 2009 16:09 
c'est pas une étoile mais le symbole degré °

vais quand même l'echapper :)

#EDIT :
Code:
$patterns[0]='/R\°/';
$patterns[1]='/V\°/';

c'est joli le gars qui leve les bras, mais à marche pô


Haut
 Profil Envoyer un e-mail  
 
MessagePosté: Lun 17 Aoû 2009 16:14 
Avatar de l’utilisateur
Oups désolé lecture diagonale (pourtant en copiant j'ai vu ° mais l'habitude d'utiliser * à eue raison de moi) ;)

Mais l'échappement fonctionne sur ce caractère également (j'ai testé), de tte façon si ça marche pas c'est souvent ça la solution ^^


Haut
 Profil Envoyer un e-mail  
 
MessagePosté: Lun 17 Aoû 2009 16:17 
Avatar de l’utilisateur
J'ai croisé ton édit ^^

Code:
$valeur = 'tot R° ';

$patterns[0]='/R\°/';
$patterns[1]='/V\°/';
$replacements[0]='Recto';
$replacements[1]='Verso';
$valeur=preg_replace($patterns, $replacements, $valeur);

echo $valeur;


Marche chez moi, il a peu être les bras plus longs lol


Haut
 Profil Envoyer un e-mail  
 
MessagePosté: Lun 17 Aoû 2009 16:34 
Administrateur
Avatar de l’utilisateur
Si la solution de mickael ne fonctionne pas, il est peut être possible de s'en sortir avec un simple str_replace ?

Code:
$chaine=str_replace("R°","Recto",$chaine);
$chaine=str_replace("V°","Verso",$chaine);


Haut
 Profil Envoyer un e-mail  
 
MessagePosté: Lun 17 Aoû 2009 16:38 
Avatar de l’utilisateur
Aurelien a écrit:
Si la solution de mickael ne fonctionne pas, il est peut être possible de s'en sortir avec un simple str_replace ?

Code:
$chaine=str_replace("R°","Recto",$chaine);
$chaine=str_replace("V°","Verso",$chaine);


Ce n'est pas ma solution mais la sienne ;)

Cela dit la solution d'Aurélien est beaucoup mieux (préfère tjs les simples quote au double c'est plus rapide ;)), rien ne sert d'utiliser des regex si ce n'est pas un format de chaine mais une simple chaine de caractères à remplacer.

(Pour Aurélien : Pourquoi vous avez retiré les avatars ? ça fait vide ^^) Réponse


Haut
 Profil Envoyer un e-mail  
 
MessagePosté: Lun 17 Aoû 2009 16:46 
ouaip, je vais faire un strreplace

pourquoi un preg_replace ? pour essayer de comprendre comment ça marche ... echec ;)

EDIT : ça ne marche pas non plus. Je présume que le fait d'être sur Mac (avec un mamp ... a priori ) doit jouer... je vais essayer en ligne

Merci en tout cas


Haut
 Profil Envoyer un e-mail  
 
MessagePosté: Lun 17 Aoû 2009 19:55 
J'ai essayé et ca fonctionne chez moi. Plus en rapport avec ton tableau.

Code:
<?php
$patterns = array ('/(19|20)(\d{2})-(\d{1,2})-(\d{1,2})/',
                   '/^\s*{(\w+)}\s*=/');
$replace = array ('\3/\4/\1\2', '$\1 =');
echo preg_replace($patterns, $replace, '{startDate} = 1999-5-27');
?> 

la doc. fonctionne sans problème.
Code:
     
$patterns=array('/R°/', '/V°/');
$replace=array('Recto', 'Verso');

$valeur=preg_replace($patterns, $replace, $text);                         


La syntaxe avec les tableaux et regex est pas évidente.


Haut
 Profil Envoyer un e-mail  
 
MessagePosté: Mar 18 Aoû 2009 23:11 
Lorsqu'il s'agit de caractères spéciaux, bien penser à regarder le code source de la page, et non l'affichage à l'écran.

Là où tu veux remplacer un simple espace, tu as peut être affaire à une entité html &nbsp;
De la même façon, peut être cherches tu à supprimer un ° là où se trouve un &deg;
> D'où le fait que ca ne marche jamais,
> d'où le fait que ca marche chez l'un mais pas chez l'autre,
...

Ne jamais faire confiance à ce qui s'affiche, puisque c'est déjà interprété :)

D'ailleurs, en profiter pour passer un coup de 'print_r($patterns)' puis sur $replace, sait on jamais ;)


Haut
 Profil Envoyer un e-mail  
 
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 11 messages ]  Aller à la page 1, 2  Suivante

Heures au format UTC [ Heure d’été ]


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages
Vous ne pouvez pas joindre des fichiers

Rechercher:
Aller à:  
cron
Abonnez-vous au flux RSS

Blog

Forum

Offres d'emploi

Copyright : Moteur, traduction et optimisation
Merci de votre visite sur le forum Oseox