Funkce pro úpravu textu do html tagu – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Funkce pro úpravu textu do html tagu – PHP – Fórum – Programujte.comFunkce pro úpravu textu do html tagu – PHP – Fórum – Programujte.com

 

john
~ Anonymní uživatel
29 příspěvků
29. 5. 2008   #1
-
0
-

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

Nahlásit jako SPAM
IP: 213.211.55.–
Paja2
~ Moderátor
+2
Věrný člen
29. 5. 2008   #2
-
0
-

To john : to by mohlo jít přes regulární výrazy

Nahlásit jako SPAM
IP: 88.146.215.–
john
~ Anonymní uživatel
29 příspěvků
29. 5. 2008   #3
-
0
-

To Paja2 :
Neco víc k tomu?

Nahlásit jako SPAM
IP: 213.211.55.–
Al0
Věrný člen
29. 5. 2008   #4
-
0
-

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

Nahlásit jako SPAM
IP: 77.48.132.–
PSP user|Web developer|C4D user||Maya Lamer|Photoshop User|Guitar player
DragonBehemont0
Super člen
30. 5. 2008   #5
-
0
-

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;

Nahlásit jako SPAM
IP: 194.138.39.–
Nemusíte vědět vše, stačí jen, když víte, kde to najít, a jak to použít. Naučíte se to právě tím používáním ;-)
DragonBehemont0
Super člen
30. 5. 2008   #6
-
0
-

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;

Nahlásit jako SPAM
IP: 194.138.39.–
Nemusíte vědět vše, stačí jen, když víte, kde to najít, a jak to použít. Naučíte se to právě tím používáním ;-)
insider0
Věrný člen
30. 5. 2008   #7
-
0
-

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

Nahlásit jako SPAM
IP: 147.32.97.–
I don't want to see you go,[br] The sky is over[br] Even though we can't afford[br] The sky is over,[br] The sky is over us.[br][br] CIVILIZATION IS OVER
DragonBehemont0
Super člen
30. 5. 2008   #8
-
0
-

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:

Nahlásit jako SPAM
IP: 194.138.39.–
Nemusíte vědět vše, stačí jen, když víte, kde to najít, a jak to použít. Naučíte se to právě tím používáním ;-)
don_Dominique0
Super člen
30. 5. 2008   #9
-
0
-
Nahlásit jako SPAM
IP: 82.202.24.–
insider0
Věrný člen
30. 5. 2008   #10
-
0
-

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 ;)

Nahlásit jako SPAM
IP: 147.32.97.–
I don't want to see you go,[br] The sky is over[br] Even though we can't afford[br] The sky is over,[br] The sky is over us.[br][br] CIVILIZATION IS OVER
DragonBehemont0
Super člen
30. 5. 2008   #11
-
0
-

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é :-)

Nahlásit jako SPAM
IP: 194.138.39.–
Nemusíte vědět vše, stačí jen, když víte, kde to najít, a jak to použít. Naučíte se to právě tím používáním ;-)
john
~ Anonymní uživatel
29 příspěvků
30. 5. 2008   #12
-
0
-

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...

Nahlásit jako SPAM
IP: 213.211.55.–
don_Dominique0
Super člen
30. 5. 2008   #13
-
0
-

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

Nahlásit jako SPAM
IP: 82.202.24.–
insider0
Věrný člen
30. 5. 2008   #14
-
0
-

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

Nahlásit jako SPAM
IP: 147.32.97.–
I don't want to see you go,[br] The sky is over[br] Even though we can't afford[br] The sky is over,[br] The sky is over us.[br][br] CIVILIZATION IS OVER
DragonBehemont0
Super člen
30. 5. 2008   #15
-
0
-

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č?

Nahlásit jako SPAM
IP: 194.138.39.–
Nemusíte vědět vše, stačí jen, když víte, kde to najít, a jak to použít. Naučíte se to právě tím používáním ;-)
john
~ Anonymní uživatel
29 příspěvků
2. 6. 2008   #16
-
0
-

super, jede:)
diky moc! :smile2:

Nahlásit jako SPAM
IP: 213.211.55.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 20 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý