Avatar billede hathor Nybegynder
08. marts 2011 - 02:24 Der er 1 kommentar og
1 løsning

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?
Avatar billede hathor Nybegynder
08. marts 2011 - 02:28 #1
Ja okay, eksperten formatterer links i min test-text, men de to første er til billeder, det sidste link er ekstrabladet.dk
Avatar billede hathor Nybegynder
09. marts 2011 - 04:42 #2
Jeg fandt ud af det:




            $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><a href=\"$pattern\"><img src=\"$pattern\" border=no class=\"reduced50\"/></span></a><br><br>", $text);
                }
            }
            return $text;
}

function formatUrlsInText($text){
            $reg_exUrl = "/(\s|\n|^)(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;
}


Strengen føres først gennem den ene og så bagefter gennem den anden funktion - første gennemløb sæt <img> tags på URLs der ender på billeder, andet gennemløb sætter <a href> på URLs der linker til sider, og udelader URLs indkapslede i tags.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester