ugrás a tartalomhoz

www-vel kezdődő szavak HTML linké alakítása

peachman · 2008. Jún. 25. (Sze), 13.58
Sziasztok!

Nem tudom melyik az a sztring függvény amivel a következőt meg lehetne csinálni:

Adva van egy HTML formázással tagolt szöveg, amelyben itt-ott szerepelnek webcímek. HTTP tagot nem tartalmaznak csak ilyen formában vannak: www.valami.com

Némelyik előtt-után szóköz van, de valamelyiknél HTML tagok vagy sorvége.

Melyik PHP függvénnyel tudnám a megkeresni a linkeket és kicserélni HTML tagolt linkre?

str_replace nem jó, mert nem tudom előre milyen nevű linkek lehetnek.
 
1

regex

Thom · 2008. Jún. 25. (Sze), 14.25
Én ezt használtam sokáig:

// http:// kezdetű szavakra linket tesz
$plattern[] = "!(^| |\n|\t)(http://|https://)([a-zA-Z0-9/_\.\-\?\&=s;]+)!i";
$replacement[] = ' <a href="\\2\\3" target="_blank">\\2\\3</a> ';

// www. kezdetű szavakra linket tesz
$plattern[] = "!(^| |\n|\t)(www.)([a-zA-Z0-9/_\.\-\?\&=s;]+)!i";
$replacement[] = ' <a href="http://\\2\\3" target="_blank" class="ext">\\2\\3</a> ';

$str = Preg_Replace($plattern, $replacement, $str);
Ez a http:// https:// www. kezdető szavakra tesz linket. A szó elején/végén lévő hatórolást (pl. szóköz) figyeli. Célszerű az egészet egy függvénybe foglalni akkor csak azt kell adott helyen meghívni.
2

Tökéletes

peachman · 2008. Jún. 27. (P), 11.02
Köszönöm, ez tökéletes lesz! Függvénybe gondoltam én is, mert több helyen is használnom kell.
3

preg e

Thom · 2008. Jún. 27. (P), 17.06
Esetleg meg lehet a dolgot spékelni azzal, hogy a túl hosszú linkek kiírt szöveges részének a közepét kivágja és a helyét kipontozza. Így egy hosszú link sem fogja széttolni a neki szánt helyet. Akkor kb. így fog egy hosszú link kinézni:
ez_egy hosszu_link...itt_a_parameterlista_vege

A megoldásért a preg e módosítója körül érdemes szétnézni, és néhány alap string kezelő függvény fog kelleni hozzá (strlen substr..).
Azzal együtt komplett a dolog.