Problème slash dans regex
Utilisateur anonyme
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
Je débute avec les regex et j'ai un souci.
J'essaie de parser le texte
Voici le code, j'ai commenté la ligne qui semble poser problème :
Merci de m'aider, j'ai essayé plusieurs combinaisons mais sans succès...
Je débute avec les regex et j'ai un souci.
J'essaie de parser le texte
//italique//pour le mettre en italique, mais ça s'applique à tout le reste de mon code et ça transforme les hyperliens...
Voici le code, j'ai commenté la ligne qui semble poser problème :
<?php
function markdown($text) {
// Markdown
$find = array(
'~\_\_(.*?)\_\_~s',
'~\*\*(.*?)\*\*~s',
'~\/\/(.*?)\/\/~s', // Cette ligne !
'~\[quote\](.*?)\[/quote\]~s',
'~\[size=(.*?)\](.*?)\[/size\]~s',
'~\{color:(.*?)\}(.*?)\{!color\}~s',
'~\[url\]((?:ftp|https?)://.*?)\[/url\]~s',
'~\[img\](https?://.*?\.(?:jpg|jpeg|gif|png|bmp))\[/img\]~s'
);
// HTML
$replace = array(
'<span style="text-decoration:underline;">$1</span>',
'<b>$1</b>',
'<i>$1</i>',
'<pre>$1</'.'pre>',
'<span style="font-size:$1px;">$2</span>',
'<span style="color:$1;">$2</span>',
'<a href="$1">$1</a>',
'<img src="$1" alt="" />'
);
// Conversion du markdown en html
return preg_replace($find,$replace,$text);
}
$string = "**gras**, __souligné__, //italique// avec du {color:blue}bleu{!color}, un lien [url]http://google.fr[/url] et une image [img]http://eu.battle.net/wow/static/images/layout/cms/forum_landing.png[/img]";
echo markdown($string);
?>
Merci de m'aider, j'ai essayé plusieurs combinaisons mais sans succès...
1 réponse
-
Je crois que j'ai compris le problème mais je n'arrive pas à le corriger.
Mon exemple contient plusieurs liens, et mes liens contiennent les caractères // qui vont tout mettre en gras...
J'ai essayé de faire ça pour exclure la séquence://
:~[^:$]\/\/(.*?)\/\/~s
Ça fonctionne, mais l'espace avant le texte en italique est supprimé...