Avatar billede kongfjong Nybegynder
25. marts 2006 - 14:12 Der er 21 kommentarer og
1 løsning

Hjælp til eregi_replace()

Jeg er ved at lege lidt med ovennævnte funktion for at få den til at vise billeder til links, som små thumbnails.

Mit problem med funktionen er, at det der skal erstatte alle forkomster af mønsteret, jo indeholder det link funktionen finder. Hvordan får jeg brugt de forekomster den finder som en del af erstatningen?
Avatar billede elskermad.dk Nybegynder
25. marts 2006 - 15:10 #1
Har du noget kode? Du skal jo i din reg.exp. lave en gruppe via paranteser hvorefter du i din replace-argument kan bruge \\1 (1 hvis det er første gruppe der angiver værdien) til at få det ind i din nye tekst.
Avatar billede elskermad.dk Nybegynder
25. marts 2006 - 15:11 #2
Eksempler kan ses på: http://dk2.php.net/eregi_replace
Avatar billede kongfjong Nybegynder
25. marts 2006 - 15:17 #3
Nu har jeg prøvet med ereg_replace hvor jeg har følgende kode:

$streng = "Sikke da et flot billede:) Her kommer et mere: http://www.martinhjort.net/fmg/Darwen/JohnnySpeak.PNG og et mere http://www.martinhjort.net/fmg/Darwen/JohnnySpeak.PNG :)";

$erstatning = "erstatning";

$pattern = "(ftp|http|https|telnet|news|nntp|file|irc):\/\/([A-Za-z0-9~#&:;=!',_æøåÆØÅ\(\)\?\/\.\-\+\[\]\|\*\$\%\^\{\}]+)\.(png|PNG|jpg|JPG|JPEG|jpeg)";

$body = ereg_replace("(ftp|http|https|telnet|news|nntp|file)(:\/\/[A-Za-z0-9~#&:;=!',_æøåÆØÅ\(\)\?\/\.\-\+\[\]\|\*\$\%\^\{\}]+)", $erstatning, $streng);

print $body;

Der vil den end ikke erstatte den fundet tekst med ordet "erstatning" selvom jeg i RegEx Buddy har tjekket for at mit udtryk bliver matched af de to links i teksten:)
Avatar billede elskermad.dk Nybegynder
25. marts 2006 - 15:22 #4
prøv at simpliser pattern-strengen først:

$pattern = "(http|https|ftp:\/\/(.+)\.(png|PNG|jpg|JPG|jpeg|JPEG|gif|GIF))";
Avatar billede kongfjong Nybegynder
25. marts 2006 - 15:23 #5
Den der $pattern variabel bruger jeg ikke til noget:) Det er overskud fra gammel kode:)
Avatar billede elskermad.dk Nybegynder
25. marts 2006 - 15:24 #6
$pattern = "((http|https|ftp):\/\/(.+)\.(png|PNG|jpg|JPG|jpeg|JPEG|gif|GIF))";

glemte lige parantes rundt om http|https|ftp da jeg først kun ville have haft http med.

Læg mærke til der er parantes rundt om hele teksten da den så kan hentes med \\1 i din replace
Avatar billede kongfjong Nybegynder
25. marts 2006 - 15:26 #7
Hm, me følgende kode:

$streng = "Sikke da et flot billede:) Her kommer et mere: http://www.martinhjort.net/fmg/Darwen/JohnnySpeak.PNG og et mere http://www.martinhjort.net/fmg/Darwen/JohnnySpeak.PNG :)";

$erstatning = "erstatning";

$body = ereg_replace("(http|https|ftp):\/\/(.+)\.(png|PNG|jpg|JPG|jpeg|JPEG|gif|GIF)", $erstatning, $streng);

print $body;

Bliver outputtet som følger:

"Sikke da et flot billede:) Her kommer et mere: erstatning :)"
Avatar billede elskermad.dk Nybegynder
25. marts 2006 - 15:26 #8
$streng = "Sikke da et flot billede:) Her kommer et mere: http://www.martinhjort.net/fmg/Darwen/JohnnySpeak.PNG og et mere http://www.martinhjort.net/fmg/Darwen/JohnnySpeak.PNG :)";

$pattern = "((http|https|ftp):\/\/(.+)\.(png|jpg|jpeg|gif))";

$erstatning = "erstatning";

print eregi_replace($pattern,$erstaning,$streng); // bruger eregi da den så er ligeglad med små og store bogstaver
Avatar billede kongfjong Nybegynder
25. marts 2006 - 15:30 #9
Hmmm outputtet er stadig det samme:S

"Sikke da et flot billede:) Her kommer et mere: erstatning :)"
Avatar billede elskermad.dk Nybegynder
25. marts 2006 - 15:32 #10
det er fordi . betyder alle tegn så den tager bare helt til sidste .png - ska lige tænke hvad der skal skrives om :)
Avatar billede kongfjong Nybegynder
25. marts 2006 - 15:34 #11
Med følgende regex:
(http|https|ftp):\/\/([A-Za-z0-9~#&:;=!',_æøåÆØÅ\(\)\?\/\.\-\+\[\]\|\*\$\%\^\{\}]+)\.(png|PNG|jpg|JPG|jpeg|JPEG|gif|GIF)

siger RegexBuddy at den er i vinkel, men det vil eregi_replace åbenbart ikke være med til:)
Avatar billede elskermad.dk Nybegynder
25. marts 2006 - 15:35 #12
<?

$streng = "Sikke da et flot billede:) Her kommer et mere:
http://www.martinhjort.net/fmg/Darwen/JohnnySpeak.PNG og et
mere http://www.martinhjort.net/fmg/Darwen/JohnnySpeak.PNG :)";

$pattern = "((http|https|ftp)://[^ ]+\.(png|jpg|jpeg|gif))";

$erstatning = "erstatning (\\1)";

print eregi_replace($pattern,$erstatning,$streng);

?>

Så breaker den ved spaces
Avatar billede elskermad.dk Nybegynder
25. marts 2006 - 15:36 #13
Kender ikke RegexBuddy - Hvad er det?
Avatar billede kongfjong Nybegynder
25. marts 2006 - 15:43 #14
Det er et program til at generere Regex'es... et rimeligt godt program, men åbenbart ikke helt perfekt:)
Avatar billede kongfjong Nybegynder
25. marts 2006 - 15:45 #15
Kan du forklare mig hvorfor den del her: [^ ] matcher ethvert tegn der IKKE er et mellemrum? Efter min forståelse, og jeg er ret newbie på det her område, burde det være noget med et mellemrum i begyndelsen af matchet?
Avatar billede elskermad.dk Nybegynder
25. marts 2006 - 15:48 #16
[^] betyder tegn der _ikke_ må findes i reg.exp'en, og da et link afsluttes ved mellemrum giver vi den et mellemrum [^ ] - Kan du få det til at virke?
Avatar billede kongfjong Nybegynder
25. marts 2006 - 15:50 #17
Okay, for i den bog jeg har læst lidt i, betyder selve tegnet ^ noget med at matche i begyndelsen af strengen:)

Ja det virker perfekt:) Men når nu jeg har dig, hvorfor skal lige netop [^ ] placeres midt i mellem præfixet og selve linket?
Avatar billede kongfjong Nybegynder
25. marts 2006 - 15:52 #18
Og ike alle mulige andre steder som jeg lige prøvede for sjovt:)
Avatar billede elskermad.dk Nybegynder
25. marts 2006 - 15:57 #19
fordi det er filnavnet vi vil have til at være uden spaces. der kan jo godt være mellemrum efter .png osv, men må indrømme jeg ikke er så godt inde i det :) Prøv at forhør dig hos roenving eller en anden af de "hardcore" herinde - Dem jeg har lært lidt af det fra :)
Avatar billede kongfjong Nybegynder
25. marts 2006 - 16:02 #20
Hæhæ okay:) Tror faktisk det giver lidt mening for mig nu;) Mange tak for hjælpen:)
Avatar billede elskermad.dk Nybegynder
25. marts 2006 - 17:29 #21
Det var så lidt - God weekend! :)
Avatar billede kongfjong Nybegynder
25. marts 2006 - 20:22 #22
Ilm:)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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