PHP > Besoin d'aide pour un bout de code
7 messages
• Page 1 sur 1
- gcvoiron
- WRInaute occasionnel

- Messages: 494
- Inscription: 19 Oct 2005
PHP > Besoin d'aide pour un bout de code
Bonjour,
J'aurai besoin d'idées pour mettre en place un bout de code en PHP.
Je voudrai en fait remplacer des mots par d'autres dans mon forum, sauf si ils se trouvent entre les balises [url]et[/url].
La chaine de caractère s'appelle $chaine. Il faudrait en fait faire :
si ce n'est pas entre [url]et[/url].
Auriez-vous des idées ?
Merci.
J'aurai besoin d'idées pour mettre en place un bout de code en PHP.
Je voudrai en fait remplacer des mots par d'autres dans mon forum, sauf si ils se trouvent entre les balises [url]et[/url].
La chaine de caractère s'appelle $chaine. Il faudrait en fait faire :
- Code: Tout sélectionner
$chaine= str_replace("Mot11", "Mot22", $chaine);
si ce n'est pas entre [url]et[/url].
Auriez-vous des idées ?
Merci.
- gcvoiron
- WRInaute occasionnel

- Messages: 494
- Inscription: 19 Oct 2005
Ok merci, mais pour savoir qu'il y a balise [URL], comment faire ?
Une boucle for avec :
?
J'ai essayé mais en vain...
Une boucle for avec :
- Code: Tout sélectionner
"$chaine[$i]$chaine[$i+1]$chaine[$i+2]$chaine[$i+3]$chaine[$i+4]"=="[URL]"
?
J'ai essayé mais en vain...
-

lupuz - WRInaute discret

- Messages: 212
- Inscription: 15 Mar 2006
Regarde du côter de la fonction ereg_replace.
http://www.php.net/ereg_replace
http://www.php.net/ereg_replace
- La Chaise sauvage
- WRInaute impliqué

- Messages: 717
- Inscription: 11 Avr 2005
sinon, je ne garantis pas l'efficacité pour de gros volumes de texte, mais cette solution fonctionne :
ce qui s'utilise évidemment comme ceci :
Et le résultat :
Evidemment, si quelqu'un a des conseils quant à a l'optimisation de ceci, je suis preneur, c'est du vite fait
edit : moui... ma fonction a quelques problèmes... notamment quand le mot recherché est en majuscules, ou quand il est collé à une balise ouvrante ou fermante... enfin bref c'est du bricolage, quoi
- Code: Tout sélectionner
function gcvoiron_replace($cherche,$remplace,$chaine){
$flag = TRUE;
$tab = explode(' ',$chaine);
$i=0;
foreach($tab as $mot){
if($flag){
if(strpos(strtolower($mot),'[url]') !== FALSE) {
$flag = FALSE;
} else {
$mot = str_replace($cherche,$remplace,$mot);
}
}
if(strpos(strtolower($mot),'[/url]') !== FALSE) {
$flag = TRUE;
}
$res .= $mot.' ';
$i++;
}
return $res;
}
ce qui s'utilise évidemment comme ceci :
- Code: Tout sélectionner
$string = "ceci est un test youpi [url]ceci est un test[/url] blabla test youpi ceci est un test youpi [URL] ceci est un test [/URL] blabla test youpi";
$ok = gcvoiron_replace('test','ok',$string);
echo 'Phrase initiale : '.$string;
echo '<br/>Phrase produite : '.$ok;
Et le résultat :
Phrase initiale : ceci est un test youpi [url]ceci est un test[/url] blabla test youpi ceci est un test youpi [url]ceci est un test[/url] blabla test youpi
Phrase produite : ceci est un ok youpi [url]ceci est un test[/url] blabla ok youpi ceci est un ok youpi [url]ceci est un test[/url] blabla ok youpi
Evidemment, si quelqu'un a des conseils quant à a l'optimisation de ceci, je suis preneur, c'est du vite fait
edit : moui... ma fonction a quelques problèmes... notamment quand le mot recherché est en majuscules, ou quand il est collé à une balise ouvrante ou fermante... enfin bref c'est du bricolage, quoi
Dernière édition par La Chaise sauvage le Jeu Fév 08, 2007 9:53, édité 1 fois.
- La Chaise sauvage
- WRInaute impliqué

- Messages: 717
- Inscription: 11 Avr 2005
une deuxième solution, qui corrige certains des bugs que je viens de relever (mais pas le point évoqué par hawkeye)
par contre là c'est sûr, il y a de la place pour optimiser (les regex, c'est pas trop mon point fort...) je vais aller vaquer à mes occupations... et je le laisse à titre d'exercice pour les suivants
par contre là c'est sûr, il y a de la place pour optimiser (les regex, c'est pas trop mon point fort...) je vais aller vaquer à mes occupations... et je le laisse à titre d'exercice pour les suivants
- Code: Tout sélectionner
function gcvoiron_replace($cherche, $remplace, $chaine, $b='url'){
$chaine = preg_replace('#\['.$b.'\]#i','['.strtolower($b).']',$chaine); // passe les balises recherchees en minuscule
$chaine = preg_replace('#\[\/'.$b.'\]#i','[/'.strtolower($b).']',$chaine);
$chaine = str_replace('['.$b.']',' ['.$b.']',$chaine); // rajoute un espace avant
$chaine = str_replace('[/'.$b.']','[/'.$b.'] ',$chaine); // et après les balises recherchees
$flag = TRUE;
$tab = explode(' ',$chaine);
$i = 0;
foreach($tab as $mot){
if($flag){
if(strpos(strtolower($mot),'['.$b.']') !== FALSE) {
$flag = FALSE;
} else {
$mot = preg_replace('#'.$cherche.'#i',$remplace,$mot);
}
}
if(strpos(strtolower($mot),'[/'.$b.']') !== FALSE) {
$flag = TRUE;
}
$res .= $mot.' ';
$i++;
}
return $res;
}
7 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- [besoin aide] petit code php
- [Resolu]Question sur un bout de code php, merci...
- besoin petite aide mais préciseuse pour 2 lignes de code
- svp aide code (php ou java..)
- besoin aide pour php
- besoin d'une aide en php (formulaire)
- Besoin aide sur Expression régulières en PHP.
- Besoin d'aide pour un petit code php
- Besoin d'aide sur du code php/mysql
- Juste un petit bout de code
- Comment éviter les contenus dupliqués (avec/sans le www) - 26-10-2005
- La formule du PageRank de Google - 06-09-2008
- Aperçu des différents types de redirection - 04-08-2008
- Soft 404 : les pages d'erreurs avec un code HTTP 200 - 08-06-2010
- 1ère faille de sécurité découverte sur Google Chrome - 03-09-2008
- Keyword Search Engine : le choix des bons mots-clés - 09-08-2004
- Affichage de la description DMOZ dans MSN Search - 23-05-2006
- Vocabulaire du référencement : noms de domaine et URL - 24-08-2007
Consultez la description détaillée des produits ou services de Google suivants : Google Code
- Analyseur d'entête HTTP
Cet outil vous permet de connaître le code HTTP renvoyé par le serveur pour une page donnée.
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités


