Syntaxe fonction (avec variable php)

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Syntaxe fonction (avec variable php)

par spirou » 31 déc. 2005, 14:58

Ah oui, j'avais pas pensé à mettre le tout dans un array, ce que j'avais fais :
if(substr_count($astuce_html, '[b]') > 0 )		// le gras
{
		$astuce_html = str_replace('[b]', '<b>', $astuce_html);
}
if(substr_count($astuce_html, '[/b]') > 0 )
{
		$astuce_html = str_replace('[/b]', '</b>', $astuce_html);
}
Et ceci pour chaque balise de bbcode, illogique n'est-ce pas :mrgreen:

et pour les balise [img] si elle donne sur une url.
$nom de ta chaine = preg_replace("/\[img\]((http:\/\/|ftp:\/\/)[^'"\\:\[\]<>]+)\[\/img\]/Ui","<img src='\\1' border='0'>",$nom de ta chaine);
$nom de ta chaine = preg_replace("/\[img align=([a-z]+)\]((http:\/|ftp:\/\/)[^'\\\:\[\]<>]+)\[\/img\]/Ui","<img src='\\2' align='\\1' border='0'>",$nom de ta chaine);
Et merci Cyrano pour l'info, je faisait de la maniere que j'ai decrite :wink:

@+ Dgse
Ben maintenant que tu m'as montré ce code, je vais être obligé de faire un copier/coller :mrgreen:

Merci Dgse :P

Vous êtes tous trop fort, vivement que j'ai votre niveau, y'a encore beaucoup de boulot :lol:


Je crois que je vais reposter dans le forum php, car j'ai encore des problèmes que je n'arrive pas à résoudre

par Dgse » 31 déc. 2005, 11:19

Bonjour

de cette maniere pour les balise simple .

Code : Tout sélectionner

$find=array("[i]","[/i]","[b]","[/b]"," [u]","[/u]","[s]","[/s]"); $repl=array("<i>","</i>","<b>","</b>","<u>","</u>","<s>","</s>"); $nom de ta chaine = str_replace($find, $repl, $nom de ta chaine);
et pour les balise [img] si elle donne sur une url.
$nom de ta chaine = preg_replace("/\[img\]((http:\/\/|ftp:\/\/)[^'\"\\:\[\]<>]+)\[\/img\]/Ui","<img src='\\1' border='0'>",$nom de ta chaine);
$nom de ta chaine = preg_replace("/\[img align=([a-z]+)\]((http:\/|ftp:\/\/)[^'\\\:\[\]<>]+)\[\/img\]/Ui","<img src='\\2' align='\\1' border='0'>",$nom de ta chaine);
Et merci Cyrano pour l'info, je faisait de la maniere que j'ai decrite :wink:

@+ Dgse

par spirou » 30 déc. 2005, 23:16

En fait, je venais de partir sur str_replace(), mais preg_replace() m'à l'air bien compliqué, je vais me plonger dedans.

Merci à tous.

:wink:

par Cyrano » 30 déc. 2005, 22:59

Apr<es à mon avis, un preg_replace() sera probablement plus approprié

par spirou » 30 déc. 2005, 22:56

Bah pourtant, je n'ai pas de balises meta dans mon code qui pourrait faire, ça.
Enfin de toute façon, ce n'est pas plus gênant que ça.
Bon, d'abord l'anti-slash avant le slash : c'est précisément pour échapper le slash en JavaScript. Pour être tout à fait franc, j'ai jamais vraiment compris ce truc, mais c'est valide et ça fonctionne.
Ok, de toute façon, le principal est que ça fonctionne, mais c'est bon de le savoir quand même.

Enfin, je sais j'exagère, maintenant que tout mon "petit bbcode" fonctionne, de quelle façon, je peux récupérer dans ma chaîne de caractères ce qui est compris par exemple entre et [ /b], je me doute qu'il va falloir que je lise le texte dans une boucle sous forme de array, mais après ...

Est-ce que explode est utilisable ici ?

Merci :P

par Cyrano » 30 déc. 2005, 22:37

Allez, vu que j'ai un spécialiste en face de moi :mrgreen:
Ben t'es pas gâté :langue:

Bon, d'abord l'anti-slash avant le slash : c'est précisément pour échapper le slash en JavaScript. Pour être tout à fait franc, j'ai jamais vraiment compris ce truc, mais c'est valide et ça fonctionne.

Si ta page se ré-actualise, c'est parce que quelque part dans ton code il y a une instruction qui ordonne de rafraichir la page, soit une balise meta, soit autre chose, mais ça ne vient sûrement pas de cette partie là.

par spirou » 30 déc. 2005, 22:29

Merci, ton code fonctionne :o

Par contre, j'ai pas compris pourquoi mettre un antislash dans [\/img].
Je ne suis plus très sûr d'un détail: si c'est du XHTML, tu peux faire sauter l'attribut language="JavaScript", le type est suffisant.
Oui, tu as raison, le type est obligatoire, mais ça fonctionne parfaitement si j'enlève le language.

Allez, vu que j'ai un spécialiste en face de moi :mrgreen:

Est-ce normal que lorsque je regarde mon code source, ma page se réactualise ?
J'avais envoyé des données précédemment.

par Cyrano » 30 déc. 2005, 22:15

Ben forcément : tu as des instruction JavaScript et des chaines de caractères non isolées : Essaye comme ceci:
echo "
                <SCRIPT language=\"Javascript\" type=\"text/javascript\">
                function ajout(img)
                {
                    document.form.desc.value += '[img]". $dest_img . "[\/img]';
                }
                </SCRIPT>
                ";
Je ne suis plus très sûr d'un détail: si c'est du XHTML, tu peux faire sauter l'attribut language="JavaScript", le type est suffisant.

par spirou » 30 déc. 2005, 22:08

J'ai essayé comme tu as dis, mais ça ne fonctionne pas.
echo 
				'
				<SCRIPT language="Javascript" type="text/javascript">
				function ajout(img)
				{
				document.form.desc.value += [img]'.%20$dest_img%20.%20'[/img];
				}
				</SCRIPT> 
				';
J'obtiens ceci dans mon code source

Code : Tout sélectionner

<SCRIPT language="Javascript" type="text/javascript"> function ajout(img) { document.form.desc.value += [img]image.jpg[/img]; } </SCRIPT>
Ce code me sert à insérer du bbcode dans un formulaire, mais je pense que vous l'aviez compris :lol:

par Cyrano » 30 déc. 2005, 21:47

Et pourquoi pas plus simplement:
"document.form.desc.value += '[img]". $dest_img . "[\/img]";

par spirou » 30 déc. 2005, 21:37

Bah, je sais pas trop comment faire alors, car il faut que ce js ne s'affiche que si la condition est vérifiée.

En plus, j'ai pas d'erreur dans ma page, pourtant je suis en XHTML strict

De plus j'ai plusieurs page en une, c'est à dire que suivant le lien cliquez par l'utilisateur (vérification avec get), seulement le code étant dans la condition s'affichera.

Si je mets le js dans le <head> de ma page, il sera sur toutes les pages, et il n'y a qu'une seule partie de ma page qui en a besoin.

Oups, j'ai pas vu que tu avais édité, désolé.

par Dgse » 30 déc. 2005, 21:27

Bonjour

j'ai pas Pensé pas que cela fonctionnerais de cette maniere :wink:


@+ Dgse

par spirou » 30 déc. 2005, 21:22

Ah oui, c'était ça, il fallait mettre des quotes et parenthèses pour que ça fonctionne.
document.form.desc.value += ("[")+img+("]")+("' . $dest_img . '")+("[/")+img+("]");
Merci de ton aide :wink:

par spirou » 30 déc. 2005, 21:10

Je te remercie, mais mon problème est que je dois mettre une variable php dans le javascript, je pense que mon problème se situe sur cette ligne :
document.form.desc.value += ("[")+img+("]")+' . $dest_img . '+("[/")+img+("]"); 
Car dans le code source, j'ai bien la valeur de $dest_img.

J'obtiens ceci, dans le code généré :

Code : Tout sélectionner

<SCRIPT language="Javascript" type="text/javascript"> function ajout(img) { document.form.desc.value += ("[")+img+("]")+image.jpg+("[/")+img+("]"); } </SCRIPT> <input type="button" value="ajouter" style="width:150px" onclick="ajout('img')" />
Il faut aussi mettre des quotes et des parenthèses pour image.jpg ?

par Dgse » 30 déc. 2005, 20:56

Bonjour

Je t'envois ce que j'ai fais d'apres ton exemple si cela peut t'aider un tantinet.
<?php
$des_img="test.jpg";  // semblant d'image
$chemin="test";         // semblant du chemin
?>
<html>
<head>
<script language="Javascript" type="text/javascript"> 
function ajout(img,image) 
{ 
document.form.desc.value += ('[')+img+(']')+image+('[/')+img+(']'); 
} 
</script> 
</head>
<body>
<form name="form">
<?php 
if(isset($chemin)) 
{ 
if(file_exists($chemin)) 
{  
echo "<br/><input type=\"button\" value=\"ajouter\" style=\"width:150px\" onclick=\"ajout('img','".$des_img."')\">";
} 
} 
?> 
<textarea name="desc"></textarea>
</body>
</html>
@+ Dgse