webForumDet fria alternativet

vad är fel? (regexp)

PHP

8 svar · 573 visningar · startad av soocks

Medlem sedan feb. 200240 inlägg
Frågan#1

Har tragglat en hel del med ett regexp-problem jag har, men fattar inte vad som är fel :) Har kollat på liknande kod av andra, men ack..

Som ni ser är (den inte speciellt originella) tanken att en url någonstans i en sträng ska bli en länk automatiskt och den ska kortas av (till 20 tecken) så att inte min layout blir fel..

$content = preg_replace("/((http|news|ftp):\\/\\/\\S+)/", "<a href=\"\\1\" target=\"_blank\">" . substr("\\1", 0, 20) . "</a>", $content);

Okej? ;)

Medlem sedan feb. 200240 inlägg
#2

jag blir fundersam, eftersom att det inte funkar.. kan det ju inte vara rätt?

Medlem sedan sep. 20021 655 inlägg
#3

Testa med detta istället:

$content = preg_replace("/(http|news|ftp):\/\/\S+/e", '"<a href=\"$0\" target=\"_blank\">" . substr("$0", 0, 20) . "</a>"', $content);
Medlem sedan feb. 200240 inlägg
#4

dectgap skrev:

Testa med detta istället:

$content = preg_replace("/(http|news|ftp):\/\/\S+/e", '"<a href=\"$0\" target=\"_blank\">" . substr("$0", 0, 20) . "</a>"', $content);

Hmm.. fick ett felmeddelande:

Warning: Unknown modifier '/' in x.php on line 666

Med min kod tar den ju ut länken rätt, men av någon anledning kortar den inte ner länken utan visar den bara i dess riktiga längd. Ändrar man så att bara ett tecken ska visas, visas ett "\" (från "\\1" skulle jag tro). Ökar man sedan längden till 2, visas allt.. i vanlig ordning.

Medlem sedan okt. 20023 030 inlägg
#5
$content = preg_replace("/(http|news|ftp):\\/\\/S+/e", '"<a href=\"$0\" target=\"_blank\">" . substr("$0", 0, 20) . "</a>"', $content);

Bättre? ;)

Medlem sedan feb. 200240 inlägg
#6

jippie! ;)

slängde på ett par "\" före S+ bara, sen funkade det :)

tackar och bockar för hjälpen.. nu ska jag bara försöka förstå vad det var som jag hade gjort fel ;)

Medlem sedan sep. 20021 655 inlägg
#7

Dessa förbanna backslashes som alltid ska trilskas i forum ;)

Medlem sedan okt. 20023 030 inlägg
#8

Felet du hade gjort var att du glömde lägga hela nedanstående kod inom apostrofer. Det måste nämligen stå i en sträng. :)

Fel: "<a href=\"\1\" target=\"_blank\">" . substr("\1", 0, 20) . "</a>"
Rätt: '"<a href=\"\1\" target=\"_blank\">" . substr("\1", 0, 20) . "</a>"'

R// Och så glömde du slänga på ett e i slutet av pattern. :)

Medlem sedan feb. 200240 inlägg
#9

se där, då var det löst ;)

tack återigen!

261 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)