Avatar billede dj-hupi Nybegynder
06. juli 2006 - 20:53 Der er 20 kommentarer og
1 løsning

henter http adresse ud og køre den igennem preg_replace

Jeg henter en masse ud på skærmen.
Når jeg køre teksten igennem:
$kommentar = str_replace('"', '\"', str_replace("\r", "", preg_replace("/([\w\.]+)(@)([\S\.]+)\b/i","<a href=\"mailto:$0\">$0</a>",preg_replace("<a href=\"http$3://$4$5>$2$4$5</a>", str_replace("\n", "<br>",$kommentar))));

Kommer der denne udskrift:
http://akvariesiden.dk/"http://akvariesiden.dk/forum_ny/forumview.php?cat=12&id=270194\"target=\"_blank\"
I explore url'en.

Kan i hjælpe ?
Avatar billede nielle Nybegynder
06. juli 2006 - 21:06 #1
Skal det hele stå i en lang linje? Det bliver ihvertfald ikke særligt overskuligt.

Der ser iøvrigt ud til at være en fejl et eller andet sted - i hvertfald har du en (-parentes mere end du har )-parenteser.

Denne lille bid ser også lidt sjov ud:

preg_replace("<a href=\"http$3://$4$5>$2$4$5</a>", str_ ...

$-tegnene skal normalt være i det 2. led i en preg_replace().
Avatar billede Slettet bruger
06. juli 2006 - 21:06 #2
Det var dog en afskyelig linie. Sikker på, at du ikke har en fortid som Perl eller Lisp-programmør? ;-)

Derudover har du ikke vist os den ægte kode, for den kode, du har vist os vil give en PARSE error.

Start med at splitte koden op i små skridt, så man kan overskue, hvad der sker på hvert trin:

$kommentar = str_replace("\n", "<br>",$kommentar); // Noget galt med nl2br?
$kommentar = preg_replace("<a href=\"http$3://$4$5>$2$4$5</a>", $kommentar); // Her mangler en søgeparameter
$kommentar = preg_replace("/([\w\.]+)(@)([\S\.]+)\b/i","<a href=\"mailto:$0\">$0</a>",$kommentar);
$kommentar = str_replace("\r", "", $kommentar);
$kommentar = str_replace('"', '\"', $kommentar);

Der var desuden en slutparentes for lidt i din kode.
Avatar billede nielle Nybegynder
06. juli 2006 - 21:09 #3
Så-så, tal pænt om perl-programmørene. :^)

Der er oneliner-entusiaster i alle lejrene.
Avatar billede Slettet bruger
06. juli 2006 - 21:31 #4
Jeg har intet imod Perl-programmører. Jeg lærte faktisk selv en smule Perl før PHP. Og i alle andre sprog savner jeg den lette adgang til regexp, som Perl giver.

Jeg synes bare, at nogle har tendens til at lave "write-only" kode, og det er især udbredt i Perl. (Og for almindelige dødelige er Lisp pr. definition ikke-læsbar og overstrøet med parenteser.)
Avatar billede dj-hupi Nybegynder
06. juli 2006 - 21:53 #5
Det er ikke mig som har programmeret det, så det kan jeg ikke tage æren for ;-)
Det jeg kan sige at det er her: preg_replace("<a href=\"http$3://$4$5>$2$4$5</a>"
Det går galt, den laver et link om til et aktivt hyperlink så man kan trykke på det.
Hvis den ikke er der kommer det bare som tekst og ikke et link.

Kan i hjælp ?
P.s. der er intet galt med perl'scriptere :P
Avatar billede nielle Nybegynder
06. juli 2006 - 22:00 #6
Som udgangspunkt er der noget seriøst galt med netop den del af koden:

$kommentar = preg_replace(dette led mangler, "<a href=\"http$3://$4$5>$2$4$5</a>", $kommentar);
Avatar billede nielle Nybegynder
06. juli 2006 - 22:02 #7
Jeg ville persoligt vælge at skrive netop den del helt om. Den ser meget mystisk ud med hey op to 5 captures ($5). Det kan vist gøres med mindre. :^)

Løsningen må dog afhænge af hvordan er link egentligt ser ud før at det skal gøres klikbart. Har du nogle eksempler på det i det konkrete tilfælde?
Avatar billede Slettet bruger
06. juli 2006 - 22:04 #8
Vi sagde også begge to, at den var gal med den del af det. Der mangler den første parameter til den preg_replace. (Jeg synes også nummereringen af parametrene i erstatningsstrengen ser underlig ud.)

Og med den kode, du har vist os, kommer der IKKE den udskrift, du har vist os. Koden er nemlig så forkert, at PHP ikke vil forsøge at udføre den.
Avatar billede dj-hupi Nybegynder
06. juli 2006 - 22:08 #9
Et eksemple kunne være: http://akvariesiden.dk/fisk/vis_fisk_ny.php?id=696 - nielle
Avatar billede dj-hupi Nybegynder
06. juli 2006 - 22:09 #10
Avatar billede nielle Nybegynder
06. juli 2006 - 22:18 #11
Prøv med denne her:

$kommentar = preg_replace("/((?:https?|ftp)://[a-z0-9./?=](?!\.))/i", "<a href='$1'>$1</a>", $kommentar);
Avatar billede nielle Nybegynder
06. juli 2006 - 22:19 #12
Ups:

$kommentar = preg_replace("/((?:https?|ftp)://[a-z0-9./?=]+(?!\.))/i", "<a href='$1'>$1</a>", $kommentar);
Avatar billede nielle Nybegynder
06. juli 2006 - 22:20 #13
Jeg giver varmen skylden:

$kommentar = preg_replace("/((?:https?|ftp)://[\w./?=]+(?!\.))/i", "<a href='$1'>$1</a>", $kommentar);
Avatar billede Slettet bruger
06. juli 2006 - 22:20 #14
Var det meningen, at det skulle være to forskellige link?

Det nielle spørger efter er eksempler på hvad der i input-teksten skal laves om til klikbare link. Især oplysninger om hvilke delelementer af en adresse, der skal være tilladt at undlade men hvor koden stadig skal lave det til et link.
Avatar billede dj-hupi Nybegynder
07. juli 2006 - 08:35 #15
Nielle jeg få en Warning: Unknown modifier '/' in /usr/local/www/data-dist/inc/fisk_komment.php on line 26
Ved $kommentar = preg_replace("/((?:https?|ftp)://[\w./?=]+(?!\.))/i", "<a href='$1'>$1</a>", $kommentar);
Avatar billede nielle Nybegynder
07. juli 2006 - 10:23 #16
Min skyld:

$kommentar = preg_replace("#((?:https?|ftp)://[\w./?=]+(?!\.))#i", "<a href='$1'>$1</a>", $kommentar);
Avatar billede dj-hupi Nybegynder
07. juli 2006 - 11:35 #17
Kanon Nielle kom med et svar ;-)
Avatar billede nielle Nybegynder
07. juli 2006 - 12:09 #18
Svar :^)
Avatar billede dj-hupi Nybegynder
18. juli 2006 - 11:06 #19
Nielle lige inden jeg acceptere det ;-)
Den knækker linket over ved &
Du kan se det følgende her: http://www.akvariesiden.dk/fisk/vis_fisk_ny.php?id=133
I kommentar.. De link der er skrevet knækker hvis der er & i linket.
Avatar billede nielle Nybegynder
18. juli 2006 - 18:50 #20
Prøv denne her variant:

$kommentar = preg_replace("#((?:https?|ftp)://[\w./?=&%]+(?!\.))#i", "<a href='$1'>$1</a>", $kommentar);
Avatar billede dj-hupi Nybegynder
18. juli 2006 - 19:36 #21
Sådan ;)
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