Problème slash dans regex

Fermé
Utilisateur anonyme - Modifié par Pyraah le 10/08/2015 à 15:01
 Utilisateur anonyme - 10 août 2015 à 15:05
Bonjour,

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

Utilisateur anonyme
10 août 2015 à 15:05
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é...
0