Preg_replace
gadj0dil0
Messages postés
39
Statut
Membre
-
tryan44 Messages postés 1381 Statut Membre -
tryan44 Messages postés 1381 Statut Membre -
Bonjour,
Je souhaiterais trouver un code plus simple pour ce qui suit.
$Dep = "(D(é|e)part)";
$dep = "(d(é|e)part)";
$DEP = "(DEPART)";
$s = "s";
$S = "S";
$pd = "pd";
$line = preg_replace("/\b$Dep$s\b/", "<a href=\"/?p=$pd\" class=\"stick\">Départs</a>", $line);
$line = preg_replace("/\b$Dep\b/", "<a href=\"/?p=$pd\" class=\"stick\">Départ</a>", $line);
$line = preg_replace("/\b$dep$s\b/", "<a href=\"/?p=$pd\" class=\"stick\">départs</a>", $line);
$line = preg_replace("/\b$dep\b/", "<a href=\"/?p=$pd\" class=\"stick\">départ</a>", $line);
$line = preg_replace("/\b$DEP$S\b/", "<a href=\"/?p=$pd\" class=\"stick\">DEPARTS</a>", $line);
$line = preg_replace("/\b$DEP\b/", "<a href=\"/?p=$pd\" class=\"stick\">DEPART</a>", $line);
$line = preg_replace("/\b$pd\b/", "departs", $line);
Actuellement le code remplace
DEPART par <a href="/?p=departs" class="stick">DEPART</a>
DEPARTS par <a href="/?p=departs" class="stick">DEPARTS</a>
Départs par <a href="/?p=departs" class="stick">Départs</a>
Départ par <a href="/?p=departs" class="stick">Départ</a>
départs par <a href="/?p=departs" class="stick">départs</a>
départ par <a href="/?p=departs" class="stick">départ</a>
Departs par <a href="/?p=departs" class="stick">Départs</a>
Depart par <a href="/?p=departs" class="stick">Départ</a>
departs par <a href="/?p=departs" class="stick">départs</a>
depart par <a href="/?p=departs" class="stick">départ</a>
Soit remplacer une chaine par un lien en respectant la casse et en corrigeant la faute d'accentuation.
remarque : difficulté supplémentaire du lien qui lui ne doit pas être modifié et qui est lui même une forme de la chaine à remplacer.
Merci
Je souhaiterais trouver un code plus simple pour ce qui suit.
$Dep = "(D(é|e)part)";
$dep = "(d(é|e)part)";
$DEP = "(DEPART)";
$s = "s";
$S = "S";
$pd = "pd";
$line = preg_replace("/\b$Dep$s\b/", "<a href=\"/?p=$pd\" class=\"stick\">Départs</a>", $line);
$line = preg_replace("/\b$Dep\b/", "<a href=\"/?p=$pd\" class=\"stick\">Départ</a>", $line);
$line = preg_replace("/\b$dep$s\b/", "<a href=\"/?p=$pd\" class=\"stick\">départs</a>", $line);
$line = preg_replace("/\b$dep\b/", "<a href=\"/?p=$pd\" class=\"stick\">départ</a>", $line);
$line = preg_replace("/\b$DEP$S\b/", "<a href=\"/?p=$pd\" class=\"stick\">DEPARTS</a>", $line);
$line = preg_replace("/\b$DEP\b/", "<a href=\"/?p=$pd\" class=\"stick\">DEPART</a>", $line);
$line = preg_replace("/\b$pd\b/", "departs", $line);
Actuellement le code remplace
DEPART par <a href="/?p=departs" class="stick">DEPART</a>
DEPARTS par <a href="/?p=departs" class="stick">DEPARTS</a>
Départs par <a href="/?p=departs" class="stick">Départs</a>
Départ par <a href="/?p=departs" class="stick">Départ</a>
départs par <a href="/?p=departs" class="stick">départs</a>
départ par <a href="/?p=departs" class="stick">départ</a>
Departs par <a href="/?p=departs" class="stick">Départs</a>
Depart par <a href="/?p=departs" class="stick">Départ</a>
departs par <a href="/?p=departs" class="stick">départs</a>
depart par <a href="/?p=departs" class="stick">départ</a>
Soit remplacer une chaine par un lien en respectant la casse et en corrigeant la faute d'accentuation.
remarque : difficulté supplémentaire du lien qui lui ne doit pas être modifié et qui est lui même une forme de la chaine à remplacer.
Merci
13 réponses
Salut,
A la final, ils doivent ressembler à quoi vos liens? Je pose cette question parce que entre tout en majuscule, avec ou sans "s", avec ou sans accent...
A la final, ils doivent ressembler à quoi vos liens? Je pose cette question parce que entre tout en majuscule, avec ou sans "s", avec ou sans accent...
salut
Vous ne voyez pas? C'est écrit >>
"
Actuellement le code remplace
...
depart par <a href="/?p=departs" class="stick">départ</a>
"
Mes liens doivent ressembler à ceux qu'ils sont actuellement.
voilà, la lecture du code en français :
Si la première lettre est en majuscule la laisser
si le mot est en minuscule le laisser
si le mot est en majuscule le laisser
si un des ces trois cas comporte un "s" le laisser
et dans tous les cas remplacer le "e" par un "é"
Celà fonctionne bien mais j'aimerais un code plus simple, voire plus joli, éventuellement créer une fonction. Combiner ucword, ucfirst, substr pourquoi pas, d'autres fonctions que j'ignore, un tableau, etc.
Je cherche un moyen de respecter le mot écrit en y ajoutant le lien (mais le pb n'est pas là, juste un souci que le "depart" du lien lui ne doit pas être modifié) et ajouter un accent aigu ci celui ci est oublié.
J'aimerais trouver dans le "remplacement" de preg_match une variable qui reprend l'occurence et non une constante.
Merci
Vous ne voyez pas? C'est écrit >>
"
Actuellement le code remplace
...
depart par <a href="/?p=departs" class="stick">départ</a>
"
Mes liens doivent ressembler à ceux qu'ils sont actuellement.
voilà, la lecture du code en français :
Si la première lettre est en majuscule la laisser
si le mot est en minuscule le laisser
si le mot est en majuscule le laisser
si un des ces trois cas comporte un "s" le laisser
et dans tous les cas remplacer le "e" par un "é"
Celà fonctionne bien mais j'aimerais un code plus simple, voire plus joli, éventuellement créer une fonction. Combiner ucword, ucfirst, substr pourquoi pas, d'autres fonctions que j'ignore, un tableau, etc.
Je cherche un moyen de respecter le mot écrit en y ajoutant le lien (mais le pb n'est pas là, juste un souci que le "depart" du lien lui ne doit pas être modifié) et ajouter un accent aigu ci celui ci est oublié.
J'aimerais trouver dans le "remplacement" de preg_match une variable qui reprend l'occurence et non une constante.
Merci
Peut être que :
Cette fonction va uniquement remplacer le "e" par un "é".
<?php
function remplace($texte){
//on remplace le lien par un @
$chaine = str_replace('<a href="/?p=departs" class="stick">','@',$texte);
//on remplace e par é
$accent = str_replace('e','é',$chaine);
//on remplace @ par le lien
$texte = str_replace('@','<a href="/?p=departs" class="stick">',$accent);
return $texte;
}
$DEP = 'DePARTS <a href="/?p=departs" class="stick">DePARTS</a>';
echo remplace($DEP);
?>
Cette fonction va uniquement remplacer le "e" par un "é".
Merci,
Je ne peux pas utiliser la fonction "deprecated" str_replace, sinon je dois passer sun une version antérieure de PHP mais je garde le principe de la fonction.
Je cherche le moyen d'ajouter un lien à un mot qui peut être écrit en minuscule, en majuscule, avec uniquement la première lettre en majuscule au singulier ou/et au pluriel. Dans ce principe je ne cherche même pas à corriger la chaine. C'est la ou je cherche quelque chose de vraiment plus simple.
Pour la correction du "e" vers le "é" là c'est diférent, je souhaite effectivement corriger, transformer le mot, en plus d'ajouter le lien.
suis-je clair?
Je cherche une piste.
Je ne peux pas utiliser la fonction "deprecated" str_replace, sinon je dois passer sun une version antérieure de PHP mais je garde le principe de la fonction.
Je cherche le moyen d'ajouter un lien à un mot qui peut être écrit en minuscule, en majuscule, avec uniquement la première lettre en majuscule au singulier ou/et au pluriel. Dans ce principe je ne cherche même pas à corriger la chaine. C'est la ou je cherche quelque chose de vraiment plus simple.
Pour la correction du "e" vers le "é" là c'est diférent, je souhaite effectivement corriger, transformer le mot, en plus d'ajouter le lien.
suis-je clair?
Je cherche une piste.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Re peut être que :)...
La première fonction remplace un mot dans une chaîne.
La seconde fonction remplace une lettre dans une chaîne et construit l'url à partir de cette chaîne.
Les 2 fonctions utilisent preg_replace() et retourne une url du type Départs <a href="/?p=departs" class="stick">Départs</a> alors que le mot d'origine est Departs.
La première fonction remplace un mot dans une chaîne.
La seconde fonction remplace une lettre dans une chaîne et construit l'url à partir de cette chaîne.
Les 2 fonctions utilisent preg_replace() et retourne une url du type Départs <a href="/?p=departs" class="stick">Départs</a> alors que le mot d'origine est Departs.
<?php
function remplace($texte){
//on explore la chaine en prenant comme séparateur un espace
$explore = explode(' ',$texte);
//$explore[0] contient le premier mot qui est en double dans la chaine
//on remplace le "e" par "é" du mot
$remplace = preg_replace('#e#', 'é', $explore[0]);
//on remplace le mot dans $explore[0] par le mot modifié de $remplace contenu dans la chaine d'origine
$texte = preg_replace('#'.$explore[0].'#',$remplace,$texte);
return $texte;
}
$DEP = 'Departs <a href="/?p=departs" class="stick">Departs</a>';
echo remplace($DEP);
//------fonction 2------->
function remplace2($texte){
//on remplace le "e" par "é" du mot
$remplace_mot = preg_replace('#e#', 'é', $texte);
//lien
$lien = '<a href="/?p=departs" class="stick">';
//construction du lien
$texte = "$remplace_mot $lien$remplace_mot</a>";
return $texte;
}
$DEP2 = 'Departs';
echo remplace2($DEP2);
?>
Merci encore
Je n'ai pas du te donner tous les éléments :
Je lis un fichier généré par un formulaire.
Ce fichier s'affiche dans le site et je le transforme :
le mot en question (en majuscule ou minuscule, au pluriel ou au singulier) devient un lien, tout en respectant sa casse et en corrigeant le "e" en "é".
En je travaille sur un mot dans un texte ($line)
Explode devrait marcher justement.
Si tu as encore un peu de temps n'hésite pas, merci
Je n'ai pas du te donner tous les éléments :
Je lis un fichier généré par un formulaire.
Ce fichier s'affiche dans le site et je le transforme :
le mot en question (en majuscule ou minuscule, au pluriel ou au singulier) devient un lien, tout en respectant sa casse et en corrigeant le "e" en "é".
En je travaille sur un mot dans un texte ($line)
Explode devrait marcher justement.
Si tu as encore un peu de temps n'hésite pas, merci
Je suis largué...
Concrètement, il ressemble à quoi le fichier qui est généré (son contenu) et comment l'affichez-vous?
Ce fichier généré est un fichier texte, php, html, autre..?
Concrètement, il ressemble à quoi le fichier qui est généré (son contenu) et comment l'affichez-vous?
Ce fichier généré est un fichier texte, php, html, autre..?
ca y est c passé, ce sont des retour de chariot qui ne passaient pas à mon avis
Le site est buggué
Le site est buggué
Le rapport :
Je reprend ce que j'ai écrit plus haut :
Le fichier est un fichier texte, le contenu d'un pop-up (div hidden ou visible) :
Le contenu :
Je reprend ce que j'ai écrit plus haut :
Le fichier est un fichier texte, le contenu d'un pop-up (div hidden ou visible) :
Le contenu :
PROCHAINS DEPARTS SORTIE TOUS LES JOURS DE 10H A 17H!!! DU 12 AU 15 AOUT PARTICIPEZ SUR ALTAIR "AUX BRAN BAS DES REGATES" DE ST MALO DU SPORT ET GRAND SPECTACLE