Autor Zpráva
Suta
Profil
Prosím o radu. Kód rozezná internetovou adresu a přidá odkazy.
	$text = EregI_Replace("(http://[^ ]+\.[^ ]+)", " <a href=http://\\1>\\1</a>", $text);

$text = EregI_Replace("(www\.[^ ]+\.[^ ]+)", " <a href=\\1>\\1</a>", $text);


Převede např. text www.neco.cz na <a href=http://www.neco.cz>www.neco.cz</a>
a text http://neco.cz na <a href=http://neco.cz>http://neco.cz</a>

Jak zapsat, aby rozeznal i text např. http://www.neco.cz (tedy http i www dohromady) a aby se to nehádalo s již výše napsanými výrazy ?

Jasně, tento výraz rozezná tvar *http://www.*
$text = EregI_Replace("(http://www.[^ ]+\.[^ ]+)", " <a href=http://\\1>\\1</a>", $text);

, ale narazí-li na tento tvar výrazy, které detekují pouze to *www.* či *http://* - celé se to rozhaší :-)

Dík moc za pomoc.
Hugo
Profil
Já používám tady tuto funkci


function txt2html($txt)
{
$patterns = array ("/(ftp\:\/\/[^\s]+)/i",
"/(mailto\:([^\s]+))/i",
"/(http\:\/\/[^\s]+)/i",
"/([\s])(www.)([^\s]+)/i",
"/^(www.)([^\s]+)/i"
);
$replace = array ("<a href=\"\\1\">\\1</a>",
"<a href=\"\\1\">\\2</a>",
"<a href=\"\\1\">\\1</a>",
" <a href=\"http://\\2\\3\">\\2\\3</a>",
"<a href=\"http://\\2\\3\">\\2\\3</a>"
);
return preg_replace($patterns,$replace, $txt);
}
Suta
Profil
Dík, Hugo. Je to pěkně napsané.

Jinak teď mě napadlo jednoduché řešení mého problému, prostě nejprve nahradím všechny řetězce *http://www* v textu za http:// - a pak to nechám normálně projet přes konkrolu www. a http:// :)

Nevíte ještě někdo, jestli všechny stránky na světě fungují jak pouze s www na začátku, tak pouze s http:// ? Nevím to úplně přesně. Je to jedno, která z možností (případně i ta třetí http://www ) je na začátku adresy?
Hugo
Profil
Suta

www není u většiny adres nezbytné. A spousta webů s www na začátku nejede. Např. http://www2.imagiware.com/
Suta
Profil
Takže je dobrým řešením doplnit do všech odkazů získaných z formulářů celé http://www. ? Pak by to měla být jistota u všeho, ne ?
Hugo
Profil
Suta

Přečti si ještě jednou co jsem napsal. Určitě to není dobrý nápad.
Suta
Profil
www není u většiny adres nezbytné - jo, teď tomu rozumím, napsal jsi to pěkně :)

A když dám všude jen http:// ?
Hugo
Profil
Myslel jsem spíš toto
A spousta webů s www na začátku nejede

To znamená, že máš např. URL www2.neco.com a pokud k tomu přidáš www., tak to samozřejmě nepojede.
Suta
Profil
Jasně. A ještě jednou: když dám všude jen http:// , pojede to ?
Hugo
Profil
Pokud bude zbytek v pořádku, tak jo.
Suta
Profil
Díky.
Toto téma je uzamčeno. Odpověď nelze zaslat.