1

søndag, 15. oktober 2006, 02:46


Hej.

Hvis jeg nu har en tekst som ser sådan her ud "www.tweak.dk http://tweak.dk + http://www.tweak.dk"

og jeg så vil have www.tweak.dk og http://www.tweak.dk + http://tweak.dk til at blive erstattet med

Link, hvor link så linker til overstående.

Nogen der ved hvordan det laves med php?

På forhånd tak!

Bundkort: MSI P35-NEO-F, Intel P35, LGA775
CPU: Intel Core 2 Duo E6550, BOX, LGA775
Grafikkort: ASUS Radeon HD 5830 1GB GDDR5
Harddisk: Seagate 7200.10 160GB, 8MB

Dette indlæg er blevet redigeret 1 gange, senest redigeret af "Dumpen" (15.10.2006, 02:47)


2

søndag, 15. oktober 2006, 08:41


Så mødes vi igen :D
Jeg går ud fra det du skal bruge er en funktion der laver almindelige tekststrenge med links i om til rigtige links - det nemmeste er at bruge regular expressions - og igen det nemmeste er jo bare at bruge en funktion der er lavet så det får du her:

PHP kildekode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
###################
## Funktion start##
###################
function lavlink($str) { 
    /*lav tekst urls om til links - godtager formatet [URL]http://[/URL] [URL]https://[/URL] [URL]ftp://[/URL] ftps:// og [URL]www.[/URL]
    kald: fx echo lavlink("dette er et [URL]www.test.dk[/URL] link med noget<br>[URL]ftp://test.dk[/URL] og til sidst noget [URL]http://test.dk[/URL]");
    af: Martin Nielsen - [URL]http://martin-nielsen.com[/URL]
    */
  return eregi_replace("((f|ht)tps?://|(www\.))([a-z0-9@:%_.~#\-\?&-]+)((\=|[a-z0-9]|\?|&|\/|\.|-|:|æ|ø|å)+){0,}", 
                       "<a href=\"\\0\">\\0</a>"$str);
}
###################
## Funktion slut ##
###################

###################
## funktion brug ##
###################
$tekst="dette er et [URL]www.test.dk[/URL] link med noget<br>[URL]ftp://test.dk[/URL] og til sidst noget [URL]http://test.dk[/URL]";
$tekst=lavlink($tekst);
echo $tekst;


Håber det kan bruges

EDIT:
Fjern alle de steder der står og Tweak har åbenbart en eller anden pervasion for at indsætte den slags selv i [php] felter, det er ikke særlgit smart jo! nå men anyways, det skal altså bare væk
Men du får den også lige i en zip

Dette indlæg er blevet redigeret 2 gange, senest redigeret af "WebT" (15.10.2006, 08:46)


3

søndag, 15. oktober 2006, 12:17


Smukt WebT :)

Nå, men jeg vil høre om du kunne forklare din funktion, eller du kunne refere mig til et sted hvor jeg kan læse om det? :clap:

Bundkort: MSI P35-NEO-F, Intel P35, LGA775
CPU: Intel Core 2 Duo E6550, BOX, LGA775
Grafikkort: ASUS Radeon HD 5830 1GB GDDR5
Harddisk: Seagate 7200.10 160GB, 8MB

4

mandag, 16. oktober 2006, 14:40


Sorry jeg ikke lige har svaret, hdd stod af i går (vræl)

Nå men det er "regular expressions" som simpelthen går ind og matcher på et mønster som fx en url du kan læse mere om det her:
http://www.regular-expressions.info/php.html
http://www.phpbuilder.com/columns/dario19990616.php3
http://dk.php.net/pcre
(og mange andre steder - det var bare lige fra mine bookmarks)
men i grove træk
php funktionen eregi_replace() tager tre argumenter, det den skal finde, det den skal erstatte og det den skal erstatte i. Det den skal finde opgives i form af regular expressions, eller rettere det kan det, du kan fx også sagtens ereg_replace("<br/>","\n",$str);

((f|ht)tps?://|(www\.))([a-z0-9@:%_.~#\-\?&-]+)((\=|[a-z0-9]|\?|&|\/|\.|-|:|æ|ø|å)+){0,}

Alle match indsætter vi i () så hvis vi ser på den første parentes
((f|ht)tps?://|(www\.))

| betyder "eller" og ? betyder ikke nødvendig og \ escaper dvs her siger vi at der enten skal stå
ftp(s)://
http(s)://
eller www.
findes et af de 5 match så ved vi at der starter en url

dernæst matcher vi hvad der så må stå efter det førnævnte og her bruges [ ] til at angive en række ting - min funktion er sådan rimeligt udbygget da den i sin tid skulle matche fx urls med querystrings, ftp urls med brugernavn og password i osv så meget af det der står er lidt unødvendigt, langt hen ad vejen kan a-z0-9\-_ nok klare det
+ tegnet som bruges flere steder signalere at tegnet må være der mere end en gang

Det var sådan lige en meget overfladisk og noget forenklet gennemgang af regular expressions og der er meget mere at læse på de sider


5

mandag, 16. oktober 2006, 18:36


Tak du

Det hjalp på forståelsen af scriptet :)

Bundkort: MSI P35-NEO-F, Intel P35, LGA775
CPU: Intel Core 2 Duo E6550, BOX, LGA775
Grafikkort: ASUS Radeon HD 5830 1GB GDDR5
Harddisk: Seagate 7200.10 160GB, 8MB

6

mandag, 16. oktober 2006, 20:51


Så lidt, ville faktisk ha' skrevet lidt forklaring i første omgang men havde lidt tralvt og så røg den møgharddisk lige pludselig, det er så der man er heldig at a-z havde søndagsåbent :D

God fornøjelse med læsningen og scriptet


Nyeste Videoer og Trailers

Indsend nyhed
Har du fundet en fed nyhed så indsend den så alle andre på Tweak.dk kan få glæde af den.