comprendre une fonction regexp
Posté : 25 mars 2009, 14:05
Bonjour à tous,
Je souhaite modifier une fonction trouvée dans un logiciel open source:
Mon problème: lorsque je crée mon texte ($body), les liens sont comme ceci:
1- www.mondomaine.com/ a été supprimé de l'url
2- index.php? est devenu index.php/?
Je suppose que c'est la fonction ci dessus qui n'est pas au point, mais pas de support pour le logiciel.
Je viens donc poster ici, cherchant de l'aide pour comprendre la fonction et modifier ce qui ne fonctionne pas bien.
Merci à tous pour quelques conseil éclairés.
Je souhaite modifier une fonction trouvée dans un logiciel open source:
function convertInternalLink($body)
{
global $mainframe;
$patterns = array();
$replacements = array();
$i = 0;
$href_exp = "/href=\"(.*?)\"/";
$link_exp = "[^http:\/\/www\.|^www\.|^http:\/\/]";
preg_match_all($href_exp, $body, $out, PREG_SET_ORDER);
foreach ($out as $val)
{
$links = preg_match($link_exp, $val[1], $match, PREG_OFFSET_CAPTURE);
if(!$links)
{
$patterns[$i] = 'href="'. $val[1] . '"';
$replacements[$i] = 'href="'. JURI::root().$val[1] . '"';
$body=str_replace($patterns[$i],$replacements[$i],$body);
$i++;
}
}
return $body;
}
}
C'est une fonction qui traite du texte ($body) saisi à partir d'un éditeur wysiwig, dans le but de modifier les liens hypertextes.Mon problème: lorsque je crée mon texte ($body), les liens sont comme ceci:
http://www.mondomaine.com/index.php?option=com_virtuemart&page=shop.browse&category_id=54&Itemid=2&lang=fr
Après passage dans la fonction, le même lien ressort comme ceci:
http://index.php/?option=com_virtuemart&page=shop.browse&category_id=54&Itemid=2&lang=fr
2 changements:1- www.mondomaine.com/ a été supprimé de l'url
2- index.php? est devenu index.php/?
Je suppose que c'est la fonction ci dessus qui n'est pas au point, mais pas de support pour le logiciel.
Je viens donc poster ici, cherchant de l'aide pour comprendre la fonction et modifier ce qui ne fonctionne pas bien.
Merci à tous pour quelques conseil éclairés.