Autor | Zpráva | ||
---|---|---|---|
wer Profil * |
#1 · Zasláno: 24. 2. 2007, 18:41:40
Zdravim,
mám naprogramovanou diskusi ale ještě bych potřeboval vědět jak udělat když něco začíná na http:// nebo www jak z toho udělat odkaz. |
||
Pavel Strejček Profil |
#2 · Zasláno: 24. 2. 2007, 18:56:39 · Upravil/a: Pavel Strejček
Nejlépe regulárním výrazem.
Například:
Dá se to samozřejmě ještě zdokonalit, kontrolovat jenom platné URL apod. |
||
wer Profil * |
#3 · Zasláno: 24. 2. 2007, 19:50:32
a jak se kontroluje platné URL?
|
||
Pavel Strejček Profil |
#4 · Zasláno: 24. 2. 2007, 19:57:44
Ještě bych doplnil, že v praxi může být u tothoto skriptu problém s tím, že se preg_replace_callback použije na řetězci ošetřeném pomocí htmspecialchars, takže může dojí k rozpůlení entity, proto je dobré to udělat nějak takto:
$text = preg_replace_callback('~((https?|ftp)://\S{4,40})\S*~', create_function( '$match', '$possiblyLastEntity = strrpos($match[1], "&"); $match[1] = $possiblyLastEntity === false ? $match[1] : substr($match[1], 0, $possiblyLastEntity); return " <a href=\"$match[0]\">$match[1]" . ($match[0] != $match[1] ? "..." : "") . "</a>";' ), $text); |
||
Pavel Strejček Profil |
#5 · Zasláno: 24. 2. 2007, 20:03:09
wer
a jak se kontroluje platné URL? Regulární výraz pro syntaktickou správnost URL:
Zakomponovat do funkce si ho už musíš sám. :-) |
||
Pavel Strejček Profil |
#6 · Zasláno: 24. 2. 2007, 20:06:19
Trochu se to poškodilo při vkládání. Ty mezery tam nemají být.
|
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0