|
| lav link klibare... Fra : Henrik Stidsen |
Dato : 08-05-02 15:21 |
| | |
Klaus Rene Hansen (08-05-2002)
| Kommentar Fra : Klaus Rene Hansen |
Dato : 08-05-02 15:39 |
|
http://sconk.dk/php_stuff.phps
Det er noget jeg har fra et gammelt forum men har mistet credits ;(
On Wed, 08 May 2002 16:20:40 +0200, Henrik Stidsen wrote:
> Hvordan laver jeg en function der udskifter http:// adresser til et
> klikbart link i en tekst ?
> - evt, så den kan udskifte {LINK: http://adresse/} til et link...
>
> Jeg har prøvet med noget eregi og lign., men den gik 120% i koks hvis
> der var flere links på samme linie...
>
| |
Rasmus Beuchert \(es~ (08-05-2002)
| Kommentar Fra : Rasmus Beuchert \(es~ |
Dato : 08-05-02 18:02 |
|
Gå ind på http://www.ljweb.biz/?Ref=usefulscripts og kig efter tagster_lib
MVH
Rasmus Beuchert (speedy@espeedy.dk)
"Henrik Stidsen" <spamtrap@spammer.dk> wrote in message
news:Xns9208A5CE758D2hstidsen@212.54.64.135...
> Hvordan laver jeg en function der udskifter http:// adresser til et
> klikbart link i en tekst ?
> - evt, så den kan udskifte {LINK: http://adresse/} til et link...
>
> Jeg har prøvet med noget eregi og lign., men den gik 120% i koks hvis
> der var flere links på samme linie...
>
> --
> Henrik Stidsen | HS235-DK | Ikke eksisterende samleobjekt
> http://min.hjemmeside.er.paa.http.kolon.2-x-skraastreg.susie.dk/
> "These opinions are my own, though for a small fee they
> be yours too." -- Dave Haynie
| |
Henrik Stidsen (08-05-2002)
| Kommentar Fra : Henrik Stidsen |
Dato : 08-05-02 23:05 |
| | |
Thomas Lindgaard (09-05-2002)
| Kommentar Fra : Thomas Lindgaard |
Dato : 09-05-02 11:27 |
| | |
Henrik Stidsen (09-05-2002)
| Kommentar Fra : Henrik Stidsen |
Dato : 09-05-02 15:04 |
| | |
Henrik Stidsen (09-05-2002)
| Kommentar Fra : Henrik Stidsen |
Dato : 09-05-02 16:20 |
|
"Thomas Lindgaard" <thomas@it-snedkeren.dk> wrote in
news:3cda4ed8$0$18591$edfadb0f@dspool01.news.tele.dk
> Har du kigget på
> http://www.php.net/manual/en/function.ereg-replace.php eksempel
> 3?
$text = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]",
"<a href=\"\\0\">\\0</a>", $text);
- hvordan får jeg den til at undlade at lave links der allerede er
klibare klikbare igen ? (altså, <A href=" http://adresse/">tekst
skal ikke have lavet værdien i href om til et link - og dermed have
linket ødelagt!!)
Jeg er ikke så god til regex, så mine forsøg med at få den til at
stoppe hvis der var et " til sidst lykkedes ikke...
--
Henrik Stidsen | HS235-DK | Ikke eksisterende samleobjekt
http://min.hjemmeside.er.paa.http.kolon.2-x-skraastreg.susie.dk/
"These opinions are my own, though for a small fee they
be yours too." -- Dave Haynie
| |
Thomas Lindgaard (09-05-2002)
| Kommentar Fra : Thomas Lindgaard |
Dato : 09-05-02 21:44 |
|
Davs
"Henrik Stidsen" <spamtrap@spammer.dk> wrote in message
news:Xns9209AFFB077F5hstidsen@212.54.64.135...
> - hvordan får jeg den til at undlade at lave links der allerede er
> klibare klikbare igen ? (altså, <A href=" http://adresse/">tekst
> skal ikke have lavet værdien i href om til et link - og dermed have
> linket ødelagt!!)
Æv, nu stiller du jo store krav :)
Kan man evt. nøjes med at sige, at der kun må ske noget, hvis der er
mellemrum omkring urlen?
$text =
ereg_replace("[:space:][[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/][:space:]",
"<a href=\"\\0\">\\0</a>", $text);
Jeg har ikke testet det.
/Thomas
| |
Henrik Stidsen (10-05-2002)
| Kommentar Fra : Henrik Stidsen |
Dato : 10-05-02 00:56 |
|
"Thomas Lindgaard" <thomas@it-snedkeren.dk> wrote in
news:3cdadf8e$0$78783$edfadb0f@dspool01.news.tele.dk
> Æv, nu stiller du jo store krav :)
jeps ;)
> Kan man evt. nøjes med at sige, at der kun må ske noget, hvis
> der er mellemrum omkring urlen?
>
> $text =
> ereg_replace("[:space:][[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]
> [:space:]", "<a href=\"\\0\">\\0</a>", $text);
Hvis linket står i starten af en linie fanger den det slet ikke
(intet mellemrum i starten), hvis jeg fjerner kravet om mellemrum før
og beholder det efter, så laver den det totalt mærkeligt, f.eks.
bliver ftp://mirrors.tiscali.dk/ lavet til et link til
ftp://mirros.tiscal - resten står der stadig men er ikke lavet til et
link! - jeg forstår intet...
(den laver iøvrigt samme trick hvis jeg sætter et ? efter [:space:] i
begyndelsen...)
--
Henrik Stidsen | HS235-DK | Ikke eksisterende samleobjekt
http://min.hjemmeside.er.paa.http.kolon.2-x-skraastreg.susie.dk/
"These opinions are my own, though for a small fee they
be yours too." -- Dave Haynie
| |
Thomas Lindgaard (10-05-2002)
| Kommentar Fra : Thomas Lindgaard |
Dato : 10-05-02 19:53 |
|
Davs
> Hvis linket står i starten af en linie fanger den det slet ikke
> (intet mellemrum i starten), hvis jeg fjerner kravet om mellemrum før
> og beholder det efter, så laver den det totalt mærkeligt, f.eks.
> bliver ftp://mirrors.tiscali.dk/ lavet til et link til
> ftp://mirros.tiscal - resten står der stadig men er ikke lavet til et
> link! - jeg forstår intet...
Så prøver vi lige igen:
<?php
$text = "Der var engang en lille <a href=\" http://www.hund.dk/\">hund
med vinger " .
" og et link: http://tv.tv2.dk. " .
" Hunden hed <a href= http://www.feta.dk>Henning" .
" ... men det kunne <a href=ftp://sunsite.auc.dk/>den</a> jo ikke gøre
for." .
" Vi skal osse lige have en med <a HREF=\" http://www.vovse.dk\">store
bogstaver.";
echo ereg_replace(
"([^\"=])((http|HTTP|https|HTTPS|ftp|FTP)://[^<>[:space:]]+[[:alnum:]/])([^\
"])",
"\\1<a href=\"\\2\">\\2</a>\\4",
$text
);
?>
Nu matches noget som IKKE er et " eller = efterfulgt af http/https/ftp og
noget mere url-værk og til sidst noget som IKKE er et ".
Mvh. Thomas
| |
Henrik Stidsen (10-05-2002)
| Kommentar Fra : Henrik Stidsen |
Dato : 10-05-02 22:50 |
|
"Thomas Lindgaard" <thomas@it-snedkeren.dk> wrote in
news:3cdc1817$0$18644$edfadb0f@dspool01.news.tele.dk
> Så prøver vi lige igen:
Se det virker hvis jeg kopierer dit forslag direkte ind i en ny php
fil, hvorfor det så ikke virker når jeg sætter det ind i mit eget
script ved jeg ikke... :(
Jeg må prøve mig lidt frem, jeg vender tilbage!
--
Henrik Stidsen | HS235-DK | Ikke eksisterende samleobjekt
http://min.hjemmeside.er.paa.http.kolon.2-x-skraastreg.susie.dk/
"These opinions are my own, though for a small fee they
be yours too." -- Dave Haynie
| |
Henrik Stidsen (10-05-2002)
| Kommentar Fra : Henrik Stidsen |
Dato : 10-05-02 23:16 |
|
Henrik Stidsen <spamtrap@spammer.dk> wrote in
news:Xns920AF227B1440hstidsen@212.54.64.135
> Jeg må prøve mig lidt frem, jeg vender tilbage!
Sådan!
Lidt modifikationer til mit script, en enkelt i dit (ereg_replace til
eregi_replace) og så virker lortet ;)
Tusind tak allesammen ;)
--
Henrik Stidsen | HS235-DK | Ikke eksisterende samleobjekt
http://min.hjemmeside.er.paa.http.kolon.2-x-skraastreg.susie.dk/
"These opinions are my own, though for a small fee they
be yours too." -- Dave Haynie
| |
Thomas Lindgaard (11-05-2002)
| Kommentar Fra : Thomas Lindgaard |
Dato : 11-05-02 08:43 |
|
Davs
> Lidt modifikationer til mit script, en enkelt i dit (ereg_replace til
> eregi_replace) og så virker lortet ;)
Gooodt så :)
.... men når du laver det om til eregi_replace, så kan du jo osse fjerne
HTTP, HTTPS og FTP:
echo eregi_replace(
"([^\"=])((http|https|ftp)://[^<>[:space:]]+[[:alnum:]/])([^\"])",
"\\1<a href=\"\\2\">\\2</a>\\4",
$text
);
Mvh.
/Thomas
| |
Henrik Stidsen (11-05-2002)
| Kommentar Fra : Henrik Stidsen |
Dato : 11-05-02 12:59 |
|
"Thomas Lindgaard" <thomas@it-snedkeren.dk> wrote in
news:3cdccc89$0$68621$edfadb0f@dspool01.news.tele.dk
> ... men når du laver det om til eregi_replace, så kan du jo osse
> fjerne HTTP, HTTPS og FTP:
jepser, det har jeg også gjort - ligesom jeg har ændret variabel
navnet ;)
Der er dog stadig en lille ting... - hvis URL'en står som det
allersidste på linien laver den en /> bagefter, hvis jeg sætter et
mellemrum efter den forsvinder det. Jeg har prøvet at rette i den
\n\r du har indsat, ingen forskel...
--
Henrik Stidsen | HS235-DK | Ikke eksisterende samleobjekt
http://min.hjemmeside.er.paa.http.kolon.2-x-skraastreg.susie.dk/
"These opinions are my own, though for a small fee they
be yours too." -- Dave Haynie
| |
Thomas Lindgaard (11-05-2002)
| Kommentar Fra : Thomas Lindgaard |
Dato : 11-05-02 16:34 |
|
Davs
> Der er dog stadig en lille ting... - hvis URL'en står som det
> allersidste på linien laver den en /> bagefter, hvis jeg sætter et
> mellemrum efter den forsvinder det. Jeg har prøvet at rette i den
> \n\r du har indsat, ingen forskel...
Det er fordi den vil prøve at matche noget efter URLen - denne dims ([^\"])
sidst i det regulære udtryk er synderen. Den kan du fjerne hvis du så osse
fjerner \\4.
echo eregi_replace(
"([^\"=])((http|https|ftp)://[^<>[:space:]]+[[:alnum:]/])",
"\\1<a href=\"\\2\">\\2</a>",
$text
);
Nu vil den osse matches URLer som står bagerst i en streng... men dem der
står forrest bliver ikke fanget (af samme årsag).
Jeg tror jeg ville holde mig til den hvor dimsen og \\4 stadig er der og så
pakke den ind i en funktion. Funktionen klistrer et mellemrum i hovede og
r.. af strengen, kalder eregi_replace og returnerer strengen minus de to
ekstra mellemrum:
function url2link($text) {
$text =
eregi_replace("([^\"=])((http|https|ftp)://[^<>[:space:]]+[[:alnum:]/])([^\"
])",
"\\1<a href=\"\\2\">\\2</a>\\4",
" " . $text . " "
);
return substr($text, 1, strlen($text) - 2);
}
Mvh.
/Thomas
| |
Henrik Stidsen (12-05-2002)
| Kommentar Fra : Henrik Stidsen |
Dato : 12-05-02 18:06 |
|
"Thomas Lindgaard" <thomas@dnspilot.com> wrote in
news:abjdfh$1jke$1@news.cybercity.dk
> Nu vil den osse matches URLer som står bagerst i en streng...
> men dem der står forrest bliver ikke fanget (af samme årsag).
Virker ikke :/
> Jeg tror jeg ville holde mig til den hvor dimsen og \\4 stadig
> er der og så pakke den ind i en funktion. Funktionen klistrer et
> mellemrum i hovede og r.. af strengen, kalder eregi_replace og
> returnerer strengen minus de to ekstra mellemrum:
Den går ikke. Input er jo ikke nødvendigvis kun en linie, dvs. hvis
linket står midt i $input efterfulgt at et linieskift vil skidtet
ikke hjælpe noget alligevel..
--
Henrik Stidsen | HS235-DK | Ikke eksisterende samleobjekt
http://min.hjemmeside.er.paa.http.kolon.2-x-skraastreg.susie.dk/
"These opinions are my own, though for a small fee they
be yours too." -- Dave Haynie
| |
Frost (10-05-2002)
| Kommentar Fra : Frost |
Dato : 10-05-02 08:26 |
|
"Henrik Stidsen" <spamtrap@spammer.dk> skrev i en meddelelse
news:Xns9208A5CE758D2hstidsen@212.54.64.135...
> Hvordan laver jeg en function der udskifter http:// adresser til et
> klikbart link i en tekst ?
Hej Henrik
Selv bruger jeg denne funktion:
function parsehyper($string) {
$search = array
("/([\w\.\/\&\=\?\-]+)@([\w\.\/\&\=\?\-]+)/",
"/((ftp(7?):\/\/)|(ftp\.))([\w\.\/\&\=\?\-]+)/",
"/((http(s?):\/\/)|(www\.))([\w\.\/\&\=\?\-]+)/");
$replace = array ("<a class=normallink href='mailto:$1@$2'>$1@$2</a>",
"<a class=normallink
href='ftp$3://$4$5'target='_blank'>$2$4$5</a>",
"<a class=normallink
href='http$3://$4$5'target='_blank'>$2$4$5</a>");
return preg_replace ($search, $replace, $string);
}
//Thomas
| |
Henrik Stidsen (10-05-2002)
| Kommentar Fra : Henrik Stidsen |
Dato : 10-05-02 18:55 |
|
"Frost" <pppp@DELETE_THISeurope.com> wrote in
news:3cdb761c$0$18645$edfadb0f@dspool01.news.tele.dk
> Selv bruger jeg denne funktion:
Tjaa, den virker ikke til mit brug,
1. Den er ikke case insensitiv (HTTP trigger den ikke)
2. Den har samme problem som alle de andre, den ødelægger det hvis et
link allerede er skrevet som et link.
Men ellers tak for forslaget!
--
Henrik Stidsen | HS235-DK | Ikke eksisterende samleobjekt
http://min.hjemmeside.er.paa.http.kolon.2-x-skraastreg.susie.dk/
"These opinions are my own, though for a small fee they
be yours too." -- Dave Haynie
| |
|
|