At sortere links til sider fra links til til billeder med preg_match_all og ereg_replace - jeg kan ikke finde ud af det :(
Jeg vil gerne integrere en lille funktion på et forum. Funktionen skal finde URLs fra et stykke HTML-baseret tekst udtrykket fra en MySQL database, der linker til et billede på et andet site.------->
function formatImgssInText($text){
$img_exUrl = "!http://.+\.(?:jpe?g|png|gif|bmp)!Ui";
preg_match_all($img_exUrl, $text, $matches);
$usedPatterns = array();
foreach($matches[0] as $pattern){
if(!array_key_exists($pattern, $usedPatterns)){
$usedPatterns[$pattern]=true;
$text = str_replace($pattern, "<br><br><div class=\"imageContainer\"><img src=\"$pattern\" border=\"0\"></img></div><br><br>", $text);
}
}
return $text;
}
<-------
Det fungerer fint, det ombryder teksten, viser billedet som det skal og fortsætter teksten.
Jeg har i forvejen en funktion, der laver URLs til links:
------->
$text = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]", "<a href=\"\\0\" target=blank>\\0</a>", $output->Text);
<-------
Problemet opstår når begge funktioner skal anvendes!
Hvis jeg først kører tekst-outputtet gennem ereg_replace, og bagefter gennem preg_match_all, så vises billedet to gange, første gang i sin originale størrelse, så i den størrelse jeg har defineret i min container i mit stylesheet, og noget html outputtes. Det er noget møg.
Hvis jeg kører det den anden vej, altså gennem preg_match_all og derefter gennem ereg_replace, vises billedet ikke, men der linkes på en besynderlig måde internt til sitet det ligger på, og der vises en blank ramme til billedet - teksten ombrydes omkring rammen, som var billedet der. URL'en til billedet der skulle forestille at være der, bliver 'http://xx-mit-site.xx/test/%3Ca%20href=' - og billedet ligger på ekstrabladets hjemmeside, så den URL er altså ikke rigtig. URL'en til billedet outputtes, men ikke som link: http://multimedia.ekstrabladet.dk/static/eb/drfront/images/2011-03/06/37-b53a6eb9-c514351d.jpeg" border="0">
Jeg aner ikke hvad jeg skal gøre, jeg forstår ikke syntaksen til disse funktioner, men er der nogen der kan hjælpe mig mig at få dem til at lade være med at gå i vejen for hinanden?
