webForumDet fria alternativet

regexp för "autolänkning"?

Programmeringur Perl, Python, Ruby och övrig CGI

7 svar · 230 visningar · startad av Joakim

Medlem sedan dec. 199982 inlägg
Frågan#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

Medlem 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]

Medlem 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

Medlem 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

Medlem 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

Medlem 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

Medlem 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

Medlem 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

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