Page 1 sur 1

Problème parseur PHP

PostPosté: 21 Juil 2011, 10:20
par qwerty
Bonjour,
J'ai un problème avec mon parseur d'URL. En effet, cette fonction permet de transformer par exemple :
Code: Tout sélectionner
http://legeekcafe.com

en :
Code: Tout sélectionner
<a href="http://legeekcafe.com">http://legeekcafe.com</a>

Pour l'instant, tout marche. Mais quand j'écris :
Code: Tout sélectionner
<a href="http://www.apprendre-php.com/">http://www.apprendre-php.com/</a>

il me transforme en
Code: Tout sélectionner
<a href="%3Ca%20href=" http:="" www.apprendre-php.com="" "="">http://www.apprendre-php.com/</a>"><a href="http://www.apprendre-php.com/">http://www.apprendre-php.com/</a>


et
Code: Tout sélectionner
<a href="http://www.apprendre-php.com/">Test</a>

en
Code: Tout sélectionner
<a href="%3Ca%20href=" http:="" www.apprendre-php.com="" "="">http://www.apprendre-php.com/</a>">Test

Voici mon code :
Code: Tout sélectionner
function bbCode($t)
// remplace les balises BBCode par des balises HTML
{
   //lien
   $t = preg_replace('#http://[a-z0-9._/-]+#i', '<a href="$0">$0</a>', $t);
    $t = preg_replace('#https://[a-z0-9._/-]+#i', '<a href="$0">$0</a>', $t);
    $t = preg_replace('#ftp://[a-z0-9._/-]+#i', '<a href="$0">$0</a>', $t);


   return $t;
}

PostPosté: 21 Juil 2011, 11:22
par zOrg
Je te conseille vivement d'intégrer ce code :
Code: Tout sélectionner
Faire un foot avec des potes, aller à la plage, sortir

et encore mieux
Code: Tout sélectionner
Prendre contact avec le sexe opposé


Tout devrait mieux se passer ensuite.

PostPosté: 21 Juil 2011, 12:51
par qwerty
zOrg a écrit:Je te conseille vivement d'intégrer ce code :
Code: Tout sélectionner
Faire un foot avec des potes, aller à la plage, sortir

et encore mieux
Code: Tout sélectionner
Prendre contact avec le sexe opposé


Tout devrait mieux se passer ensuite.

J'aime pas le foot, la place est a 300km de chez moi et il pleut. Pour le sexe opposé, c'est elle qui me repousse.

PostPosté: 21 Juil 2011, 18:22
par qwerty
J'ai trouvé ce code pas tu tout optimiser. Comment l'optimiser ?
Code: Tout sélectionner
function bbcode($t)
{
   $t = parselien($t);
   return $t;
}
// Parser Liens
function parselien($text)
{
   $ret = ' ' . $text;
   $ret = preg_replace_callback("!(^|[\n ])(https?://[^ \"\n\r\t<]*)!is", "regexp_http", $ret);
   $ret = preg_replace_callback("!(^|[\n ])((www|ftp)\.[^ \"\t\n\r<]*)!is", "regexp_http", $ret);
   $ret = preg_replace_callback("!(^|[\n ])([a-z0-9&\-_.\S]+?)@([\w\-]+\.([\w\-\.]+\.)*[\w]+)!i", "regexp_mail", $ret);
   $ret = preg_replace_callback("!(^|[\n ])(ftp?://[^ \"\n\r\t<]*)!is", "regexp_ftp", $ret);
   $ret = substr($ret, 1);
   return($ret);
}

function shorten($value, $length = 50)
{
   if (strlen($value) > $length) {
   return substr($value , 0, 35 ) . '...' . substr($value , -15);
   }
   else {
   return $value;
   }
}

function regexp_http($value, $http = '', $end = '')
{
   if (!preg_match("!^http!", $value[2]))
   $http = 'http://';
   if (preg_match("!([\.,\?\!]+)$!", $value[2], $match))
   {
   $end = $match[1];
   $value[2] = preg_replace("!([\.,\?\!]+)$!", "", $value[2]);
   }
   return $value[1] . '<a href="' . $http . $value[2] . '">' . $value[2] . '</a>' . $end;
}

function regexp_ftp($value, $ftp = '', $end = '')
{
   if (!preg_match("!^ftp!", $value[2]))
   $ftp = 'ftp://';
   if (preg_match("!([\.,\?\!]+)$!", $value[2], $match))
   {
   $end = $match[1];
   $value[2] = preg_replace("!([\.,\?\!]+)$!", "", $value[2]);
   }
   return $value[1] . '<a href="' . $ftp . $value[2] . '">' . $value[2] . '</a>' . $end;
}

function regexp_mail($value, $end = '')
{
   if (preg_match("!([\.,\?\!]+)$!", $value[2], $match))
   {
   $end = $match[1];
   $value[2] = preg_replace("!([\.,\?\!]+)$!", "", $value[2]);
   }
   return $value[1] . '<a href="mailto:' . $value[2] . '@' . $value[3] . '">' . $value[2] . '@' . $value[3] . '</a>' . $end;
}

PostPosté: 21 Juil 2011, 19:37
par zOrg
Image

PostPosté: 21 Juil 2011, 22:20
par Manu_Marty
Je t'aurais bien aidé mais la dernière fois que j'ai codé en PHP ça date d'il y a deux ans et je suis loin d'être un expert... :d02: Mais là à vu d'oeil je vois pas ça a l'air d'être une fonction classique pourtant...

PostPosté: 22 Juil 2011, 07:58
par Gatien
Les 2 posts de zOrg : :a12: :lol:

PostPosté: 22 Juil 2011, 16:11
par strickwood
zOrg a écrit:Je te conseille vivement d'intégrer ce code :
Code: Tout sélectionner
Faire un foot avec des potes, aller à la plage, sortir

et encore mieux
Code: Tout sélectionner
Prendre contact avec le sexe opposé


Tout devrait mieux se passer ensuite.


:a12: