Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/08/2007, 19h19   #1
Futur Membre du Club
 
Inscription : mai 2007
Messages : 58
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Meurthe et Moselle (Lorraine)

Informations forums :
Inscription : mai 2007
Messages : 58
Points : 17
Points : 17
Par défaut regex pour remplacer bbcode et img

Bonjour,
je suis en train de créer un petit script de BBCODE permettant de faire des mises en pages simples...
dans un souci d'esthétique, je voudrais que les images présentes dans un articles soient positionnées comme je veux avec l'aide des css, je souhaiterais donc que chaque image ait sa propre classe css.
pour y parvenir j'ai modifié mon code de base pour arriver à ça:
Code :
1
2
3
4
5
6
$i=0;
preg_match_all("'\[img=http://(.*?)\]'", $texte, $result,PREG_PATTERN_ORDER);
foreach ($result as $data){
	$texte = preg_replace("'\[img=http://(.*?)\]'","<img src=\"http://".$result[1][$i]."\" hspace=\"5\" title=\"$i\">",$texte);
	$i++;	
	}
je sens que j'y suis presque mais je bloque, toutes mes images sont remplacées par la dernière et le $i ne prend pas la valeur incrémentée et reste à 0...

en gros quand dans mon contenu texte, le script trouve les tag [ i m g = http://... ] il doit le remplacer par les balises html adéquates avec en plus le class="img1"...

est ce que j'ai été assez clair, je m'embrouille assez souvent je dois dire
merci de votre aide!
Gwen
gwena54 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/08/2007, 22h36   #2
Membre chevronné
 
Avatar de Korko Fain
 
Étudiant
Inscription : août 2005
Messages : 632
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2005
Messages : 632
Points : 632
Points : 632
Code :
$texte = preg_replace("'\[img=http://(.*?)\]'","<img src=\"http://\\1\" hspace=\"5\" title=\"$i\">",$texte);
Korko Fain est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 12h49   #3
Futur Membre du Club
 
Inscription : mai 2007
Messages : 58
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Meurthe et Moselle (Lorraine)

Informations forums :
Inscription : mai 2007
Messages : 58
Points : 17
Points : 17
merci de ta réponse, mais peu importe que ce soit $1 ou \\1!
dans les 2 cas le remplacement du bbcode marche de toute façon

ce que je cherche à faire, c'est mettre un numéro (avec $i) pour chaque image (la je l'ai mis dans le title, mais c'est pour l'exmple)!
de cette manière je pourrai leur attribuer une classe me permettant de les positionner ou bon me semble en css!
gwena54 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 13h17   #4
Futur Membre du Club
 
Inscription : mai 2007
Messages : 58
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Meurthe et Moselle (Lorraine)

Informations forums :
Inscription : mai 2007
Messages : 58
Points : 17
Points : 17
voilà, il suffisait d'utiliser ce code!
Code :
1
2
3
4
5
preg_match_all("'\[img=http://(.*?)\]'", $texte, $result,PREG_PATTERN_ORDER);
foreach ($result[0] as $data){
	$texte = preg_replace("'\[img=http://(.*?)\]'","<img src=\"http://\\1\" hspace=\"5\" title=\"$i\">",$texte,1);
	$i++;
	}
merci quand meme, ça m'a permis de réfléchir un peu plus
gwena54 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 13h43   #5
Membre chevronné
 
Avatar de Korko Fain
 
Étudiant
Inscription : août 2005
Messages : 632
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2005
Messages : 632
Points : 632
Points : 632
ta pas l'impression de te compliquer la vie ? A faire un preg_match_all et un preg_replace
Si tu fesait un preg_replace_callback comme ça sa serait beaucoup plus leger :
Code :
1
2
3
4
5
6
7
8
function callback_function($match)
{
    static $i = 0;
    $i++;
    return '<img src="http://$1" hspace="5" title="'.$i.'">';
}
 
$texte = preg_replace("'\[img=http://(.*?)\]'", 'callback_function', $texte);
Korko Fain est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 14h20   #6
Futur Membre du Club
 
Inscription : mai 2007
Messages : 58
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Meurthe et Moselle (Lorraine)

Informations forums :
Inscription : mai 2007
Messages : 58
Points : 17
Points : 17
ha ben oui
bon ben merci de l'info!
gwena54 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 14h42   #7
Membre chevronné
 
Avatar de Korko Fain
 
Étudiant
Inscription : août 2005
Messages : 632
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2005
Messages : 632
Points : 632
Points : 632
De rien ^^
Korko Fain est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h46.


 
 
 
 
Partenaires

Hébergement Web