V DB (mysql) mam záznamy z návštěvní knihy. Sem tam do této knihy někdo vloží odkaz na jinou stránku --> zobrazí se jen text adresy (nedá se na to kliknou - není to hypertextový odkaz).
Potreboval bych aby nejaka funkce vzdy projela text a pokud v tomto textu budou znaky typu http:// tak se tento text oznací jako hypertextovy odkaz s tim ze to vezme jen text do mezery (oddelení adresy od dalsího textu).
Nevíte pls někdo čím na to?
Diky
Fórum › PHP
Funkce pro úpravu textu do html tagu
Zdravím, udělej to přes array nahrazováním znaků.. tento kod dej pred to nez se text uklada do DB..
$replace = array(
'[url]' => '[<a href="',
'[/url]' => '">link</a>]'
);
$text = strtr($text, $replace);
Zadávat se bude:
[url.]http://www.programujte.com[/url.]
(bez teček)
jo a $text je promenna kde je ulozen text ve kterem se nachazi odkaz
To Al : Funkce je to dobrá, ale pouze v případě, že by tam zadával to [url.] a [/url.], ale mám pocit, že on chtěl něco, aby by to dělalo bez těchto zkratek - automaticky. Omlouvám se za možna zbytečně složitý kód, když někdo poradí, jak ho zjednosušit, budu rád. Tadz je zdroják, který automaticky převede text obsahující http:/ a www. na odkaz.
$hledane="http://";
$hledane2="www.";
$data=explode(" ", $text);
while(list($key, $value)=each($data)){
if(substr_count($value, $hledane) || substr_count($value, $hledane2)){
if(!substr_count($value, $hledane))$value="http://".$value;
$data[$key]="<a href='$value' title='$value'>$value</a>";
}
}
$text=implode(" ", $data);
echo $text;
To DragonBehemont : Tady je upravený kód tak, aby bral v potaz pouze opravdové odkazy. Aneb, když bude v textu pouze http://, tak to nepřevede na odkaz, musí tam být http://neco.
$hledane="http://";
$hledane2="www.";
$data=explode(" ", $text);
while(list($key, $value)=each($data)){
if((substr_count($value, $hledane) && strlen($hledane)<strlen($value)) || (substr_count($value, $hledane2) && strlen($hledane2)<strlen($value))){
if(!substr_count($value, $hledane))$value="http://".$value;
$data[$key]="<a href='$value' title='$value'>$value</a>";
}
}
$text=implode(" ", $data);
echo $text;
To DragonBehemont : tak na tohle jsou fakt lepsi regularni vyrazy :)
ten nejjednodussi muze vypadata treba takhle
$regExp = "(http:\/\/(www.)?[^ ]+)";
pomoci preg_replace se pak nahrazuje v textu
To insider : Upřímně řečeno... tak v těhle klikyhácích se fakt nevyznám :smile10: Nemohl by si tam napsat jednoduchý komentář? Chápu část http:\/\/ (www.)? , tak tohle bych ještě snad pochopil... ale jak z toho uděláš odkaz, tak to fakt nevím... :smile19:
Už sem to ru jednou řešil .. opověď hledejte tady: http://programujte.com/index.php?akce=diskuze&kam=vlakno&tema=3446-hladanie-odkazov-v-texte
jde o automatické vkládání tagů .. tudíž nemusí se zadávat [url]
To DragonBehemont :
nejak takhle:
$regExp = "/(http:\/\/(www.)?[^ ]+)/"; // zapomel jsem na lomitka :)
$text = preg_replace($regExp, "<a href=\"\\1\">link</a>", $text);
jinak jak psal don_Dominique, uz se to resilo ;)
To insider : Jj, už vím... ale našel jsem si to na Googlo... a opět se potvrdilo, že co se zdálo ze začátku tak těžké, tak je nakonec docela lehké :-)
Tak jsem zkusil poslední příspěvek od insidera
z DB ze sloupce textarea taham text, ktery chci zformatovat (adresy v tomto textu).
Použil jsem insiderův kod a vlepil jsem na zobrazovací stranku tento kod:
$regExp = "/(http:\/\/(www.)?[^ ]+)/"; // zapomel jsem na lomitka :)
$textarea = preg_replace($regExp, "<a href=\"\\1\">link</a>", $textarea);
a nic se nezměnilo...
To john : proto sem ti sem házek link z tý předešlý diskuze kde už je funkční řešení ;-) a to sice tohle
$z = "((http://)?(www\.|[a-z0-9_\-]+\.)?([a-z0-9_\-]+)\.(eu|sk|com|net|org|biz|info|name|cz|de|ru|ac|ag|am|as|be|bz|cc|cd|ch|cn|at|eud\.ws|com\.cn|net\.cn|org\.cn|gs|in|co\.in|net\.in|org\.in|firm\.in|gen\.in|ind\.in|io|jp|la|li|lt|lv|ms|nu|sg|com\.sg|sh|tc|tk|to|tv|idv\.tw|com\.tw|org\.tw|co\.uk|me\.uk|org\.uk|vg|ws|com\.ws|net\.ws|org\.ws|gov\.ws)((/([a-z0-9_\-]*|\.|\.\.))*)([a-z0-9_\.\-\?=%&]*)?)";
$do = '<a href="http://\\3\\4.\\5\\6\\9" style="color: #333399;">\\3\\4.\\5</a>';
$vysledek = eregi_replace($z, $do, $text);
$z je regularni vyraz který hledá v textu odkazy
$do je výseldný html tag do kterého se vkládají nalezené odkazy
$text je samotný text ve kterym se odkazy hledají
a $vyseldek je už text s naformatovanyma odkazama
jeste jsem si pro jistotu vyzkousel tohle
$textarea = "text text http://example.com text text";
$regExp = "/(http:\/\/(www.)?[^ ]+)/"; // zapomel jsem na lomitka :)
$textarea = preg_replace($regExp, "<a href=\"\\1\">link</a>", $textarea);
echo $textarea;
a vystup je:
text text <a href="http://example.com">link</a> text text
nevim, jak vypada tvuj vypis, ale asi to vypisujes driv, nez to projedes
mám problém s regulérními výrazy... začal jsem s nima experimentovat:
$regEx="((http:\/\/?www\.[a-zA-Z_.?&\/=]+)|(www\.[a-zA-Z_.?&\/=]+))";
$regiExi2="(\*b\*)([[:alnum:][:punct:][:blank:][:space:][:print:]ěščřžýáíéúůďťň*/]+)(\*/b\*){1}";
$regiExi3="(\*i\*)([[:alnum:][:punct:][:blank:][:space:][:print:]ěščřžýáíéúůďťň*/]+)(\*/i\*){1}";
$regiExi4="(\*u\*)([[:alnum:][:punct:][:blank:][:space:][:print:]ěščřžýáíéúůďťň*/]+)(\*/u\*){1}";
$vysledek='<a href="http://domena.cz/SCRIPTS/reload.php?link=\\1" title="Odkaz na \\1">\\1</a>';
$vysledek2='<b>\\2</b>';
$vysledek3='<i>\\2</i>';
$vysledek4='<u>\\2</u>';
$text=eregi_replace($regEx, $vysledek, $text);
$text=eregi_replace($regiExi2, $vysledek2, $text);
$text=eregi_replace($regiExi3, $vysledek3, $text);
$text=eregi_replace($regiExi4, $vysledek4, $text);
Dokud mám text, kde se formátování písma vyskytuje pouze jednou, tak to funguje perfektně, ale jakmile je jich tam více, tak mi to ignoruje počet, ale třeba mi udělá podrtžené písmo od prvního *u* až po poslední */u*, ale jestli je mezi tím jinčí ukončení podtržení, tak ho to ignoruje. Nevíte proč?
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Odstranění html tagu — založil pajaja
Procisteni HTML tagu — založil zak
Kód onmousexxx=... v html tagu — založil Petroff
Uzavření označeného textu do BBcode tagů — založil tom*p
Vytvoření stringu pomocí HTML tagů? — založil Michal
Moderátoři diskuze