PHP - løb først en streng igennem og indsæt <img> tag på URLs med billeder, lav derefter URLs til sider til links - jeg kan ikke finde ud af det
På et forum poster brugere links til andre sider - nogle links er til en regulær side der skal formatteres, andre er URL direkte til billedfiler.Først lader jeg strengen løbe gennem en funktion, som sætter <img src="..." /> på alle URLs til billedfiler:
------->
function formatImgsInText($text){
$reg_exImg = "!http://.+\.(?:jpe?g|png|gif|bmp)!Ui";
preg_match_all($reg_exImg, $text, $matches);
$usedPatterns = array();
foreach($matches[0] as $pattern){
if(!array_key_exists($pattern, $usedPatterns)){
$usedPatterns[$pattern]=true;
$text = str_replace($pattern, "<br><br><img src=\"$pattern\" /><br><br>", $text);
}
}
return $text;
}
<-------
Det virker fint, når jeg prøver med min test-streng - billederne vises, og teksten brydes på rigtig vis. Linket til ekstrabladet outputtes bare som tekst. Her er min test-streng:
------->
$test_text = "Her ser I mig på mit skib: http://multimedia.ekstrabladet.dk/static/eb/drfront/images/2011-03/06/37-b53a6eb9-c514351d.jpeg, her er endnu et billde, http://verydemotivational.files.wordpress.com/2011/03/demotivational-posters-cool-friends.jpg og er her et link til ekstrabladet http://www.ekstrabladet.dk";
<-------
Nu vil jeg så gerne gøre linket til ekstrabladet.dk til et html link med <a href="...">link</a> som i gode gamle dage.
------->
function formatUrlsInText($text){
$reg_exUrl = "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/";
preg_match_all($reg_exUrl, $text, $matches);
$usedPatterns = array();
foreach($matches[0] as $pattern){
if(!array_key_exists($pattern, $usedPatterns)){
$usedPatterns[$pattern]=true;
$text = str_replace ($pattern, "<a href=\"$pattern\">$pattern</a>", $text);
}
}
return $text;
}
<-------
Og så går det ligesom galt. Fordi den sidste funktion fanger URL'en i <img> tag'et.
Jeg har prøvet på et VÆLD af forskellige måder at få $reg_exUrl variablen i den sidste funktion, til at lade være med at medtage URL-addresser i <img> tags, men jeg har måttet opgive. Jeg forstår bare ikke syntaksen godt nok, tilsyneladende.
Er der nogen der kan og vil hjælpe her?