webForumDet fria alternativet

regexp för "autolänkning"?

7 svar · 230 visningar · startad av Joakim

JoakimMedlem sedan dec. 199982 inlägg
#1

Tjo!

Sitter o pillar lite med en chat, HTML i inläggen är inte tillåtna men jag vill att om någon skriver "http://www.whatever.nåt" skall det skrivas ut som en länk, alltså "<A HREF="http://www.whatever.nåt">http://www.whatever.nåt</A> likadant med mailadresser. om nån skriver "mittnamn@whatever.nåt" skall det skrivas ut som "<A HREF="mailto:mittnamn@whatever.nåt">mailto:mittnamn@whatever.nåt</A>" är inte så hemma på regexp (än) så att jag kan fixa detta så det funkar smärtfritt. Men det finns säkert nån som är en fena på det här? =)

Trevlig helg!

------------------
Joakim Johansson
Vice VD / tekniker
Stereo Communication

JojoxxMedlem sedan juni 20004 308 inlägg
#2

Om vi tänker oss att du har texten i variabeln $html;

# Först URL'er.
foreach ($html =~ /http:\/\/(.*?)\s/ig){ $html =~ s/http:\/\/$_/<a href="http:\/\/$_">http:\/\/$_<\/a>/ig; }
# Sedan giltiga e-post adresser.
foreach ($html =~ /(\S*)/ig){ if(length()>5&&index($_,'@')>0&&rindex($_,'.')>index($_,'@')+1){ $html =~ s/$_/<a href="mailto:$_">$_<\/a>/ig; } }

--- Tillägg ---
Sista foreach fram till } skall vara på en och samma rad.

------------------
/ J

[Redigerat av Jojoxx den 04 jun 2001]

JoakimMedlem sedan dec. 199982 inlägg
#3

Hej!

Tack för svaret!
För mailadresser funkar det fint men URL'er förblir olänkade.

// Joakim

JojoxxMedlem sedan juni 20004 308 inlägg
#4

Det var konstigt. Du är säker på att du inte missat något när du kopierat koden? Jag lade upp ett test här med exakt samma kod.

------------------
/ J

JoakimMedlem sedan dec. 199982 inlägg
#5

Ja, det är konstigt =)

Jag har testat hit och dit och det funkar finfint om jag lägger det som skall "autolänkas" som en variabel i scriptet. Men så fort jag skall göra samma sak med data från/till chatten (har testat att lägga det både när ett inlägg postas och skriva med länkningen till databasen och att lägga det när scriptet hämtar inläggen och parsar dom för visnig och köra länkning då) men det vill inte. Funderar på om det kan ha nåt med teckenkodning att göra...

// Joakim

JojoxxMedlem sedan juni 20004 308 inlägg
#6

Tja... det regexpet gör är att leta reda på "http://"+något och slutar med en white-space (mellanslag, radbrytning, tab etc.). Men att ersätta mellanslag till &amp  verkar ju lite dumt. Prova att dumpa ut ett inlägg till en text-fil så ser du exakt vad det är för tecken som används.

------------------
/ J

JoakimMedlem sedan dec. 199982 inlägg
#7

Jag har gjort det, jobbar med textfilsdatabas nämligen, allt "ser" okej ut i textfilen. Alla tecken ser ut som dom bör. Klurigt..

// Joakim

JojoxxMedlem sedan juni 20004 308 inlägg
#8

Jo, men dumpa det data som du använder till regexpen på samma ställe i scriptet (ifall någon form av tecken-konvertering skulle göras av scriptet). Det måste ju skillja något på de tecken som du får in, mot de som du hårdkodar i scriptet när det ena fungerar men inte det andra. Annars vore det magi :)

------------------
/ J

139 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)