remplacer une URL dans une string par une balise html [Résolu] - PHP - Programmation
Marsh Posté le 23-08-2005 à 12:21:57
un truc comme ça tout simplement non ?
Code :
|
Marsh Posté le 23-08-2005 à 12:27:42
http://fr.php.net/preg_replace
Doit y avoir la solution qqpart dans les commentaires, si t'as pas envie d'apprendre les regexp juste pour ça.
Marsh Posté le 23-08-2005 à 12:44:10
xtof_83 a écrit : pas besoin de regexp...enfin... |
Heuuu pour faire des remplacements adaptatifs comme ça c'est quand même largement plus pratique
Surtout si tu veux linkifier des URL aléatoires sans contraintes (autre que de simples http://)
Marsh Posté le 23-08-2005 à 12:45:42
oki, sa c'est vrai...
Enfin dans le cas présent m'étonnerais que le gars veule ce plonger la dedans...
Marsh Posté le 23-08-2005 à 13:27:49
xtof_83 a écrit : oki, sa c'est vrai... |
C'est quoi ton idée ?
Marsh Posté le 23-08-2005 à 13:59:37
Un truc du style: seb306bzh
Parce que je pense que c'est ça qu'il souhaite...
enfin on peux pas savoir ... faudrait qu'il nous le dise...
Marsh Posté le 23-08-2005 à 14:09:14
Il veut faire les remplacements dans une chaîne de caractères qui contient autre chose qu'uniquement une url connue à l'avance, je suppose.
Marsh Posté le 23-08-2005 à 14:11:17
sielfried a écrit : Il veut faire les remplacements dans une chaîne de caractères qui contient autre chose qu'uniquement une url connue à l'avance, je suppose. |
Dans ce cas là, milles escuses....
Marsh Posté le 23-08-2005 à 14:14:12
Tiens une portion simplifié de mon code.
Code :
|
Marsh Posté le 24-08-2005 à 09:52:58
Hello, j'ai fouiné et bidouillé un peu c'est bon merci pour les réponses
Le but est de remplacer des url quelconque (que je ne connais pas d'avance) dans une string par une balise html qui contient l'url en question.
Code :
|
l'expression régulière est pas jolie mais a l'avantage d'être robuste question parsage de l'url.
C'est pour faire une petite tribune pour mes potes cf :
http://peyo.lost-oasis.net/tribune/tribune.php
comme ça si on met une adresse web dans la zone de texte, elle apparait bien en lien pour le navigateur une fois postée.
bye bye
Reng.
edit : j'ai eu une coupure du net hier, j'ai pas pu vous préciser ce que je désirais, ça m'a permis de mettre le nez dans les reg exp
Marsh Posté le 24-08-2005 à 13:20:15
Tiens y a des bugs faut que tu affiches en utilisant htmlentities()
C'est moi les posts Test et Bug
http://peyo.lost-oasis.net/tribune/tribune.php
Marsh Posté le 24-08-2005 à 15:05:45
vi je sais bug connu sur les forums mal codés mais mes potes sont loin d'être des codeurs et ils s'amuseront pas à mettre des balises div fermantes dans la case pseudo ou dans le corps du post...
là j'ai une tribune opérationnelle toute légère avec 60 lignes de code, ça suffira largement :]
Marsh Posté le 24-08-2005 à 16:00:15
Mais tlm a accès à ton truc aussi ou par la suite ce sera securisé ?
Sinon autant utilisé htmlentities() ça fera pas plus ramer.
Enfin c'est toi qui voit c'est ton code
Marsh Posté le 24-08-2005 à 16:46:54
On peut injecter du JS facilement là, je viens d'essayer avec un alert.
Ca coûte rien, un coup d'htmlentities.
Marsh Posté le 24-08-2005 à 17:43:00
Masenko a écrit : Mais tlm a accès à ton truc aussi ou par la suite ce sera securisé ? |
oui oui ce sera derriere un accès avec mpd. je l'ai mis temporairement sur mon site perso pour vous montrer ce que je voulais faire.
merci du tuyau pour htmlentities() mais je ne comprends pas à quoi ça sert, j'ai lu ça : http://www.nexen.net/docs/php/anno [...] tities.php et ça m'a pas aidé
en deux mots, ça sert à quoi ?
Marsh Posté le 24-08-2005 à 18:00:53
htmlentities
(PHP 3, PHP 4, PHP 5)
htmlentities -- Convertit tous les caractères éligibles en entités HTML
Source -> http://fr.php.net/manual/fr/function.htmlentities.php
Ce qui fait que si tu écris par exemple <br /> ou <html> ou etc etc... ça va être convertit et donc tu verras écris <br /> à l'écran.
Regarde le code source de la page tu verras tout ce qui est en dessous est convertit.
Look ça :
<br />
<a href="http://www.google.fr">Google</a>
<table>
<tr>
<td>Pwet</td>
</tr>
</table>
<div class="test">Yop yop</div>
Marsh Posté le 24-08-2005 à 18:02:10
Mon message au dessus a été convertit en ça :
Code :
|
Marsh Posté le 24-08-2005 à 18:22:44
rengzehn a écrit : oui oui ce sera derriere un accès avec mpd. je l'ai mis temporairement sur mon site perso pour vous montrer ce que je voulais faire. |
Ca sert à transformer les caractères HTML tendancieux en entités, afin qu'ils soient affichés correctement mais pas interprétés en tant que code HTML.
Par exemple, prenons un forum que tu crées.
Les utilisateurs peuvent rentrer des posts qui sont ensuite affichés.
Si un utilisateur saisit
<script type="text/javascript">alert("i pwnz teh worldz" )</script> |
Si tu balances ça direct dans tes pages, ça veut dire que les utilisateurs peuvent intégrer ce qu'ils veulent, et ça te met complètement à la merci des petits malins (cross site scripting, ...)
Donc tu passes un coup de htmlentities et ça devient
<script type="text/javascript">alert("i pwnz teh worldz")</script> |
L'intégrer direct à la page ne le fera pas interpréter direct par les navigateurs, ne fera qu'afficher ce qui a été saisi.
Marsh Posté le 26-08-2005 à 13:37:46
J'ai rajouté la modif avec htmlentities, allez-y viendez maintenant avec votre JS )
http://peyo.lost-oasis.net/tribune/tribune.php
Marsh Posté le 26-08-2005 à 13:55:57
Ok maintenant le problème c'est que tu as mis un addslashes() lors de l'insertion SQL alors que les magic_quote_gpc sont à 1.
a 1 : ajoute des slash genre ' et " devient \' et \"
a 0 : ne fait rien ' et " = ' et "
Tu dois soit créer une fonction qui vérifie si les magic_quote_gpc sont à 1 avec get_magic_quote_gpc.
Exemple.
Code :
|
Cette fonction va faire un addslashes si les magic_quote_gpc sont à off.
Si c'est activé elle ne va pas le faire car c'est fait par défault.
Si t'as pas compris va sur ta tribune et écrit ça "L'oiseau" tu verras ce sera transformé en "L\'oiseau".
Bonne chance.
(Pour info moi je désactive les magic_quote_gpc quand l'hébergeur le permet sinon pas le choix tu dois faire des fonctions qui vérifie)
Marsh Posté le 26-08-2005 à 14:20:11
Pfiou réglé avec stripslashes()
D'autres remarques ?
ps : je bosse pas avec une bdd mais un simple fichier texte.
Marsh Posté le 26-08-2005 à 14:34:22
Hum nan en faite t'as fais pas mal d'erreur regarde ici :
http://validator.w3.org/check?uri= [...] ribune.php
Marsh Posté le 30-08-2005 à 23:03:25
Bonjour,
J'emprunte temporairement le sujet pour une petite question rapide :
Si on applique les htmlentities, y a-t-il un moyen de n'autoriser que quelques balises ? Je vuodrais en effet prendre en compte la balise <br /> et uniquement celle-ci. Merci pour les éclaircissements
Jarodd
Marsh Posté le 30-08-2005 à 23:22:03
Oui et non
htmlentities($_POST['pwet'];
va tout remplacer.
Mais si tu fais
nl2br(htmlentities($_POST['pwet']));
Ca va ajouter les <br /> si tu fais des sauts de lignes dans ton message, mais si t'écris <br /> manuelement il sera encodé.
Marsh Posté le 31-08-2005 à 00:37:32
superjarodd a écrit : Bonjour, |
strip_tags, ça devrait être ce que tu veux
Marsh Posté le 23-08-2005 à 12:19:05
Bonjour,
Je cherche une fonction pour remplacer
http://www.toto.org
par
<a href="http://www.toto.org">http://www.toto.org</a>
dans une chaîne de caractères, ceci quelque soit l'url.
Bien à vous,
Reng.
Message édité par rengzehn le 24-08-2005 à 10:53:40