remplacer guillemets par ceux de Word


chava2b
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 263
Inscription: 5 Déc 2003

remplacer guillemets par ceux de Word

Message le Mar Fév 23, 2010 9:25

Bonjour

Je cherche un p'tit bout de code pour remplacer les doubles-cotes par les guillemets style Word (« et » en html)
Comme il faut remplacer " mon texte " par « mon texte » il faut detecter le 1er guillemet puis le second pour les remplacer.

Quelqu'un à deja utilisé un systeme pour faire ca ?

Merci


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 8579
Inscription: 23 Nov 2005

Re: remplacer guillemets par ceux de Word

Message le Mar Fév 23, 2010 10:20



chava2b
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 263
Inscription: 5 Déc 2003

Re: remplacer guillemets par ceux de Word

Message le Mar Fév 23, 2010 10:25

UsagiYojimbo merci pour ton lien mais ca ne sert à rien de mettre que ce lien.... Ou alors explique moi comment faire avec cette fonction


Merci

dmathieu
Modérateur
Modérateur
 
Messages: 7244
Inscription: 9 Jan 2004

Re: remplacer guillemets par ceux de Word

Message le Mar Fév 23, 2010 10:26

IMHO le plus simple est de se baser sur la règle grammaticale des ouvertures et fermetures de guillemets :
- Lorsqu'un guillemet est ouvrant, on place un espace avant et pas d'espace après.
- Lorsqu'un guillement est fermant, on place un espace après et pas avant.

Donc tu peut faire :
Code: Tout sélectionner
$str = str_replace(' "', ' «', $str);
$str = str_replace('" ', '» ', $str);


chava2b
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 263
Inscription: 5 Déc 2003

Re: remplacer guillemets par ceux de Word

Message le Mar Fév 23, 2010 10:40

dmathieu, je ne suis pas sur que ca soit bon

si j'ai " mon texte " à traiter, il y a un espace avant et apres.

Donc ta 1ere regle espace-guillemet va etre appliquée tout le temps

dmathieu
Modérateur
Modérateur
 
Messages: 7244
Inscription: 9 Jan 2004

Re: remplacer guillemets par ceux de Word

Message le Mar Fév 23, 2010 10:52

Bah oui. Faut que tu éduque tes utilisateurs donc. Ou bien que tu fasse les changements manuellement.


anemone-clown
WRInaute passionné
WRInaute passionné
 
Messages: 1277
Inscription: 11 Nov 2007

Re: remplacer guillemets par ceux de Word

Message le Mar Fév 23, 2010 12:07

dmathieu a écrit:- Lorsqu'un guillemet est ouvrant, on place un espace avant et pas d'espace après.
- Lorsqu'un guillement est fermant, on place un espace après et pas avant.

Les options de base de Word mettent un espace devant et un espace derrière. :wink:

Il faut passer par un regex (code suivant à vérifier car PHP n'est pas mon langage de prédilection) :
Code: Tout sélectionner
$patterns = array();
$replacements = array();
$patterns[] = "\"(.*)\"/isU";
$replacements[] = "«\\1»";
$str = preg_replace($patterns, $replacements, $str);

On cherche des paires de guillemets plutôt que de chercher des guillemets isolés.

jcaron
WRInaute accro
WRInaute accro
 
Messages: 2687
Inscription: 13 Fév 2004

Re: remplacer guillemets par ceux de Word

Message le Mar Fév 23, 2010 12:13

[grillé]

Je dirais (pas testé):
Code: Tout sélectionner
preg_replace('#"[^"]+"#','\xAB$1\xBB',$string)


Si tu es en ISO-8859-1. En UTF-8 ce sera \xC2\xAB et \xC2\xBB.

Evidemment tout ça suppose que les guillemets vont bien par paire, qu'ils ne sont pas imbriqués, et que ce sont bien des guillemets "français" que tu veux (on n'utilise pas les mêmes en anglais par exemple).

Jacques.


chava2b
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 263
Inscription: 5 Déc 2003

Re: remplacer guillemets par ceux de Word

Message le Mar Fév 23, 2010 14:17

anemone-clown c'est nikel ca fonctionne... (J'ai juste du ajouter un slash en plus)

Code: Tout sélectionner
$patterns[] = "/\"(.*)\"/isU";


Merci à tous


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

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