Str_replace() sur $1 ?

Résolu
Torkass Messages postés 166 Date d'inscription   Statut Membre Dernière intervention   -  
carbon3 Messages postés 470 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à toutes et à tous. :)

J'ai un petit soucis avec une fonction pour remplacer des espaces par des tirets :

function liens($texte)
	{
	$pattern = "/=(.*)=/";
	$id = $_GET['id'];

	$replace = "<a href='www.domaine.com/".str_replace("_", "-", $_GET['var'])."-Zone-".$id."-".str_replace(" ", "-", "$1").".html' title='Consulter $1'>$1</a>";
	$string = preg_replace($pattern, $replace, $texte);	
	return $string;
	}

Alors voilà, les termes entourés par des signes "=" (sans guillemets) se transforment en liens comme suit :

=coucou=

devient
<a href="http://www.domaine.com/var-Zone-id-je%20suis%20ici.html">je suis ici</a>

Comme vous pouvez le voir, j'ai bien utilisé la fonction str_replace() pour changer les espaces en tirets mais ça ne fonctionne pas ! :/
Je pense qu'il y a un problème pour effectuer une fonction sur la variable $1...

Quelqu'un saurait-il m'aider, s'il vous plait ?
Merci d'avance.

5 réponses

carbon3 Messages postés 470 Date d'inscription   Statut Membre Dernière intervention   73
 
Salut,
ça fait un moment que j'ai pas mis les mains dans ce camboui, mais de tête, je vois ta variable encadrée par des guillemets dans les params de ta fonction... glop / pas glop ?
idem dans ton title...
et ceci dit, où est-elle définie ?
merci de me corriger
0
carbon3 Messages postés 470 Date d'inscription   Statut Membre Dernière intervention   73
 
Bon ben je m'y suis remis, et mon php5 n'est pas d'accord avec la définition d'une variable de type $1. Je crois me souvenir que les variables ne doivent pas commencer par un chiffre.
0
carbon3 Messages postés 470 Date d'inscription   Statut Membre Dernière intervention   73
 
Et pour la fin de chaîne $replace
title='Consulter ".$1."'>".$uno."</a>";

on en finit plus de mettre des points et des guillemets... ;-)

après, je ne sais pas ce qu'il y a dans $_GET['id']
et dans $_GET['var']

est-ce que ça sort d'un formulaire ?
Mes lectures m'ont incité à préférer les $_POST, mais c'est personnel.

bon code


l
0
Torkass Messages postés 166 Date d'inscription   Statut Membre Dernière intervention   95
 
Bonjour,

il ne s'agit pas exactement d'une variable mais d'une expression régulière, c'est pourquoi il tout le reste fonctionne à part le remplacement des espaces par des underscores.
J'ai bien compris où tu voulais en venir avec les ".." etc... mais tu sembles ignorer que les variables s'affichent lorsqu'elles sont entourées principalement par des "" ^^, je te rassure donc, mon code est bon à ce niveau là, idem pour les variables de type $_GET (non non, pas de $_POST, ça vient pas d'un formulaire mais de l'adresse). ;)

En ce qui concerne $1, il s'agit donc d'une expression régulière que je n'ai pas la possibilité de renommer apparemment, elle est définie par le (.*) dans $pattern. S'il y en avait d'autres, il se nommeraient chacun $2, $3, $4 et ainsi de suite.
Ce que j'aimerais pouvoir faire, c'est l'employer dans une requête... Là mes problèmes se dissiperaient... Mais il y a toujours un message d'erreur au niveau de la requête, même si $1 est inséré ainsi ".$1." et j'ignore comment procéder...
0
carbon3 Messages postés 470 Date d'inscription   Statut Membre Dernière intervention   73
 
Salut,
le fait est que j'ai travaillé à l'arrache avec ton bout de code, et je n'ai réussi à obtenir une sortie de $string qu'en faisant des manips qui m'ont forcément sorti du contexte de ton travail. Ceci dit, j'en ai appris un peu plus sur les $_GET, maintenant je comprend mieux la capture.
Quand aux expressions régulières, je n'ai pas eu un bon premier contact...
Quand je regarde $pattern, je ne vois qu'une chaîne de caractères, parce que c'est entre des guillemets que j'ai appris à les enfermées tout en laissant les variables libres. Mais je te fais confiance : tu sembles ignorer que les variables s'affichent lorsqu'elles sont entourées principalement par des "" ^^, mais je ne fais pas le lien avec $1. Tout ce que je peux dire pour l'instant c'est qu'un echo génère une erreur. D'où mon travail sur les "" et les .
J'vais tâcher d'en savoir plus avant de te conseiller quoique ce soit ;-p
0
Torkass Messages postés 166 Date d'inscription   Statut Membre Dernière intervention   95
 
Salut carbon3,

Tout d'abord, je tiens à te remercier du temps que tu as consacré à ma demande d'aide ! ^^

J'ai obtenu une réponse qui a pu m'aider sr un autre forum (règle numéro 1 : toujours augmenter ses chances ! lol), voici l'adresse si tu es intéressé par la solution à ce problème :
- https://www.developpez.net/forums/d500417/php/langage/tableaux-str_replace-expression-reguliere-1-fonction/#post3052604

Voilà, et je te remercie encore pour ton aide. :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
carbon3 Messages postés 470 Date d'inscription   Statut Membre Dernière intervention   73
 
merci pour le lien. Faut que je repotasse mon php.

bon code
0