Str_replace() sur $1 ?

Résolu/Fermé
Torkass Messages postés 166 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 21 janvier 2016 - 29 févr. 2008 à 03:08
carbon3 Messages postés 470 Date d'inscription mercredi 20 février 2008 Statut Membre Dernière intervention 6 janvier 2013 - 1 mars 2008 à 19:51
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 mercredi 20 février 2008 Statut Membre Dernière intervention 6 janvier 2013 73
29 févr. 2008 à 07:06
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 mercredi 20 février 2008 Statut Membre Dernière intervention 6 janvier 2013 73
29 févr. 2008 à 07:36
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 mercredi 20 février 2008 Statut Membre Dernière intervention 6 janvier 2013 73
29 févr. 2008 à 07:59
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 jeudi 20 décembre 2007 Statut Membre Dernière intervention 21 janvier 2016 95
1 mars 2008 à 10:53
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 mercredi 20 février 2008 Statut Membre Dernière intervention 6 janvier 2013 73
1 mars 2008 à 17:10
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 jeudi 20 décembre 2007 Statut Membre Dernière intervention 21 janvier 2016 95
1 mars 2008 à 19:39
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 mercredi 20 février 2008 Statut Membre Dernière intervention 6 janvier 2013 73
1 mars 2008 à 19:51
merci pour le lien. Faut que je repotasse mon php.

bon code
0