Hladanie odkazov v texte – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Hladanie odkazov v texte – PHP – Fórum – Programujte.comHladanie odkazov v texte – PHP – Fórum – Programujte.com

 

dalaman0
Věrný člen
4. 3. 2007   #1
-
0
-

Caute,
pri vkladani prispevku z guestbooku do databazy ho osetrujem nasledovne:



$text= substr($sprava,0,200);
$text = htmlspecialchars($sprava);
$text= trim($text);
$text= nl2br($text);

$slovo=split("[[:blank:]]+",$text);
$text="";
for ($a=0;$a<count($slovo);$a++):
$slovo[$a]=trim($slovo[$a]);
if(eregi("^(www\..+\..{2,3}.*)",$slovo[$a])):
$odkaz=eregi_replace("^(www\..+\..{2,3}.*)","<a href=http://\\1>\\1</a>",$slovo[$a]);
elseif(eregi("^(http://.+\..{2,3}.*)",$slovo[$a])):
$odkaz=eregi_replace("^(http://.+\..{2,3}.*)","<a href=\\1>\\1</a>",$slovo[$a]);
else:
$odkaz=$slovo[$a];
endif;
$text.=$odkaz." ";
endfor;


Lenze nefunguje mi zmena odkazov do tvaru <a href=URL> URL </a>

[podtrzene]Tu su vysledky:[/podtrzene]

www.programujte.com
<a href="http://www.programujte.com">www.prog ramujte.com</a> (s tou medzerou )

http://www.programujte.com
<a href="http://www.programujte.com">http://w ww.programujte.com</a> (tiez s tou medzerou )

http://www.programujte.com/forum.php?akce=new&id=35
<a p?akce="new&id=35" href="http://www.programujte.com/forum.ph">http://www.programu jte.com/forum.php?akce=new&id=35</a>
(okrem ineho chyba p)

Nahlásit jako SPAM
IP: ...–
Lepšie je mať psa na saláme ako salámu pod psom !!!
olgo0
Věrný člen
4. 3. 2007   #2
-
0
-

z regularnych vyrazov mam husu koze takze ti asi neporadim.
neco ma ale uputalo:



$text=substr($sprava,0,200);
$text=htmlspecialchars($sprava);

-najprv orezes text na 200 znakov
-nasledne ho prepises textom plnej dlzky s pridanymi entitami

alebo som snad neco prehliadol?

Nahlásit jako SPAM
IP: ...–
"Boze, dopraj mi, prosim ta, petdesiat rokov prace a zabavy, a potom nahlu smrt v spanku." J. Grisham
4. 3. 2007   #3
-
0
-

Prijde mi, ze to delas nejak hrozne komplikovane - pokud si dobre pamatuju, tak jsem nekde videl neco podobneho pomoci jedineho regulerniho vyrazu. A vubec, co ma presne delat tohle?

$slovo=split("[[:blank:]]+",$text);
To se to snazis rozdelit na jednotliva slova?

Nahlásit jako SPAM
IP: ...–
Prosím, jestli potřebujete s něčím poradit,zeptejte se na fóru. Jakýkoliv bezdůvodný pokus mě kontaktovat skončí okamžitým přidáním do ignore listu![br][br] Současný počet osob, které to nepochopily: 7
dalaman0
Věrný člen
4. 3. 2007   #4
-
0
-

:):):) zacinam s regularnymi vyrazmi. Prekukli ste ma
To olgo: mas pravdu to sa tam dostalo nedopatrenim.... Diky za vsimnutie ale v tom chyba nie je
To CommanderZ: ano rozdelujem spravu na slova v kazdom slove hladam retazec ktory odpoveda maske www.nieco.xy alebo http://nieco.xy

:(


Nahlásit jako SPAM
IP: ...–
Lepšie je mať psa na saláme ako salámu pod psom !!!
olgo0
Věrný člen
5. 3. 2007   #5
-
0
-
Nahlásit jako SPAM
IP: ...–
"Boze, dopraj mi, prosim ta, petdesiat rokov prace a zabavy, a potom nahlu smrt v spanku." J. Grisham
5. 3. 2007   #6
-
0
-

Nahrazavani reglernimi vyrazi spociva v tom, ze to smamotny retezec najde v celem dlouhem retezci a pak ho nahradi (s moznosti prenest nektere casti), zadne rozkladani na slova neni treba

Nahlásit jako SPAM
IP: ...–
Prosím, jestli potřebujete s něčím poradit,zeptejte se na fóru. Jakýkoliv bezdůvodný pokus mě kontaktovat skončí okamžitým přidáním do ignore listu![br][br] Současný počet osob, které to nepochopily: 7
dalaman0
Věrný člen
6. 3. 2007   #7
-
0
-

To olgo:

nerad chytam za slovicka ale co http://www.nieco...?



nechapem ?? http://nieco.xy a http://www.nieco.xy je rozdiel nie ??

Uz mi to ide.... To na tom interval nebolo tiez stopercentne.... V istych pripadoch mi to blblo tak som sa musel vratit k "fekalnemu" stylu a delit to na slova :) :)

Nahlásit jako SPAM
IP: ...–
Lepšie je mať psa na saláme ako salámu pod psom !!!
olgo0
Věrný člen
6. 3. 2007   #8
-
0
-

To olgo:

nerad chytam za slovicka ale co http://www.nieco...?

nechapem ?? http://nieco.xy a http://www.nieco.xy je rozdiel nie ??


no ved prave najde "www.nieco.xy", najde "http://nieco.xy" ale nenajde "http://www.nieco.xy"

Nahlásit jako SPAM
IP: ...–
"Boze, dopraj mi, prosim ta, petdesiat rokov prace a zabavy, a potom nahlu smrt v spanku." J. Grisham
10. 4. 2007   #9
-
0
-

je to trosku mimo tema, ale misto for mi prijde elegantnejsi pouzit foreach



$slova=split("[[:blank:]]+",$text);
$text="";
foreach ($slova as $slovo):

Nahlásit jako SPAM
IP: ...–
pKnfAZUr
~ Anonymní uživatel
1 příspěvek
27. 8. 2007   #10
-
0
-

OhwJ2I <a href="http://kwirsvmhdhyc.com/">kwirsvmhdhyc</a>, [url=http://ivfbukaztxrd.com/]ivfbukaztxrd[/url], [link=http://trtqgamhahtu.com/]trtqgamhahtu[/link], http://hcdxlliihbup.com/

Nahlásit jako SPAM
IP: ...–
Zelenáč0
Posthunter
27. 8. 2007   #11
-
0
-

Hehe, s regularnima vyrazama si clovek uzije srandy :-)
Ale tohleto jsem vykoumal: ;-)



$text = "Nazdarek www.seznam.cz http://seznam.cz http://www.seznam.cz/neco.html seznam.czca";

$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;">\\1</a>';
$vysledek = eregi_replace($z, $do, $text);

echo($vysledek);

Nahlásit jako SPAM
IP: ...–
27. 8. 2007   #12
-
0
-

lol, nemas jednodussi misto toho seznamu domen pouzit [az]{2-3}?

Nahlásit jako SPAM
IP: ...–
Prosím, jestli potřebujete s něčím poradit,zeptejte se na fóru. Jakýkoliv bezdůvodný pokus mě kontaktovat skončí okamžitým přidáním do ignore listu![br][br] Současný počet osob, které to nepochopily: 7
Zelenáč0
Posthunter
27. 8. 2007   #13
-
0
-

CommanderZ píše:#
# lol, nemas jednodussi misto toho seznamu domen pouzit [az]{2-3}?


Mno oni ty "hybridni" sestiznakove domeny jsou uz pomerne caste.. A navic by to zvyraznilo např. "jsem domů.Na stole" (Sice by za tou teckou spravne mela byt mezera, ale na to se nemuzu spolehat - zvlaste v chatu ci foru)

Nahlásit jako SPAM
IP: ...–
dalaman0
Věrný člen
27. 8. 2007   #14
-
0
-

HEHE , diky MOC.. pekne stary topic :) Vyskusam
P.s.: Ale moze niekto napisat aj toto: ...idem domov.info dostanete zajtra....

Nahlásit jako SPAM
IP: ...–
Lepšie je mať psa na saláme ako salámu pod psom !!!
Zelenáč0
Posthunter
27. 8. 2007   #15
-
0
-

Muzes do toho zakomponovat umelou inteligenci :-P

Nahlásit jako SPAM
IP: ...–
insider0
Věrný člen
27. 8. 2007   #16
-
0
-

mozna sem neco prehlid, ale podle toho reg vyrazu nebudou fungovat odkazy, ktere budou obsahovat ?(otaznik) coz v dnesni rewrite mode uz tak castno neni videt, ale prece jen je jich stale dost a dost :) mozna by ten vycet na konci(nemyslim domeny) stacilo prepsat na

([\S]*)
tedy cokoli mimo mezer, novych radku a pod

Nahlásit jako SPAM
IP: ...–
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
Zelenáč0
Posthunter
27. 8. 2007   #17
-
0
-

A :-) Mas pravdu, na to jsem uplne zapomel..

Nahlásit jako SPAM
IP: ...–
Zelenáč0
Posthunter
28. 8. 2007   #18
-
0
-

upraveny vyraz ;-)

"((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_\.\-\?=%&]*)?)"

Nahlásit jako SPAM
IP: ...–
bYtDyIPkQYSoq
~ Anonymní uživatel
1 příspěvek
28. 9. 2007   #19
-
0
-

kdMBg8 <a href="http://uwyiuytrpcvx.com/">uwyiuytrpcvx</a>, [url=http://gozfmhxyfyjc.com/]gozfmhxyfyjc[/url], [link=http://rgstpxyxkpqh.com/]rgstpxyxkpqh[/link], http://pymjpxptixcs.com/

Nahlásit jako SPAM
IP: ...–
don_Dominique0
Super člen
2. 10. 2007   #20
-
0
-

V reg výrazech se vůbec nevyznam a teď ani nemam moc času na to abych se je naučil, takže vás prosím o pomoc: použil sem kód od zelenáče a vše OK ale potřeboval bych když se v tom textu vyskytne např www.odkaz.cz/?id=34&neco=ds aby ten odkaz vypadal pak jako www.odkaz.cz a ne celý to ww.odkaz.cz/?id=34&neco=ds . Jestli to de nějak přes ty reg ??? Díky .

Nahlásit jako SPAM
IP: ...–
Zelenáč0
Posthunter
2. 10. 2007   #21
-
0
-

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


Zkus to takhle, pripadne si pohraj s cislama v $do ;-)

Nahlásit jako SPAM
IP: ...–
don_Dominique0
Super člen
11. 10. 2007   #22
-
0
-

Pomohli byste mi ještě jednou prosím : mám v textu tagy [ img]obr.jpg[/ img] a potrebuju dostat pomocí reg výrazů z těchto tagů ten název obrázku !
Zkoušel sem to sám ale fakt sem s tim nepohnul páč vůbec nechápu ty \\2\\4 v tom $do a reg výrazy taky moc neumim ! Moc díky i za předešlou radu.

EDIT: sorry ale neuvědomil sem si že ty samé tagy využívá programujte.cz pro zobrazení obrázku !!!

Nahlásit jako SPAM
IP: ...–
Zelenáč0
Posthunter
11. 10. 2007   #23
-
0
-

mám v textu tagy...

jake???

Nahlásit jako SPAM
IP: ...–
ench0
Stálý člen
11. 10. 2007   #24
-
0
-
Nahlásit jako SPAM
IP: ...–
I programování je pudová záležitost. Buď to pude, nebo to nepude
don_Dominique0
Super člen
18. 10. 2007   #25
-
0
-

Jo díky. Pořád to ale nechápu ( ty reg. výrazy ). Můžete mi to někdo ještě osvětlit ? hlavně to s těma odkazam to //2//3 ...
A mohl bych vás ještě poprosit o jedno: Jak vytrhnu z textu části které sou mezi značkamy [list] a [/list] ???
Moc díky za odpověď .

Nahlásit jako SPAM
IP: ...–
insider0
Věrný člen
18. 10. 2007   #26
-
0
-

takze, zavorky oznacuji v regularnim prikaze "podprikaz"(nebo jak to nazvat), ke kteremu je ve vysledku pristup prave pomoci //1,$1 nebo ja nevim jak jeste. to cislo(n) oznacuje obsah zavorky v n-tem poradi - (vyraz(vyraz1(vyraz2)))(vyraz3) ->
//1 = vyrazvyraz1vyraz2
//2 = vyraz1vyraz2
//3 = vyraz2
//4 = vyraz3

snad to chapes :)

k tomu listu:

$reg = "\[list\]([^\[]+)\[\/list\]";

tohle by mozna mohlo fungovat, kdyz tak me nekdo opravte

Nahlásit jako SPAM
IP: ...–
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
don_Dominique0
Super člen
19. 10. 2007   #27
-
0
-

To insider: Díky moc, už to chápu.

Nahlásit jako SPAM
IP: ...–
Blujacker
~ Moderátor
0
Grafoman
26. 10. 2007   #28
-
0
-

A jak by ten regulérní výraz vypadal v přídadě, že bych chtěl text mezi tagy [a][/a] nahradit <a href='text'>text</a>?
Děkuji

Nahlásit jako SPAM
IP: 213.220.226.–
Navštivte server Matematika pro každého
Najdete zde články zabývající se matematikou základních a středních škol a databázi hlavolamů.
Pro vyzkoušení Vaš
Zelenáč0
Posthunter
26. 10. 2007   #29
-
0
-

ereg_replace("\[a\]([^\[]+)\[/a\]", "<a href=\"\\1\">\\1</a>", $str)

Nahlásit jako SPAM
IP: 89.176.254.–
insider0
Věrný člen
26. 10. 2007   #30
-
0
-

uplne stejne, akorat list prepises na a ...
a nahrazovani potom

"<a href=\"\\1\">\\1</a>"

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
insider0
Věrný člen
26. 10. 2007   #31
-
0
-

To Zelenáč : proc vkladas \\2, vzdyt je tam jen jeden subvyraz -> vkladat by se mela 1 a to plusko bych asi hodil spis za ] nez za ), protoze pri vkladani subvyrazu by se hodilo jen jedno pismenko

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
Zelenáč0
Posthunter
26. 10. 2007   #32
-
0
-

Jasne, uz jsem si toho vsimnul... Nejsem si jisty, jestli se to cisluje od nuly nebo od jednicky.. Pokud od jednicky tak \\1 je AFAIK cely vyraz a \\2 potom prvni zavorka !? Mozna, ze si to pletu s std. ereg...

Nahlásit jako SPAM
IP: 89.176.254.–
Zelenáč0
Posthunter
26. 10. 2007   #33
-
0
-

J, tak tam ma byt \\1 :o)

Nahlásit jako SPAM
IP: 89.176.254.–
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, 37 hostů

Podobná vlákna

Packal slova v texte — založil tomas

Hladanie suborov — založil Anonymní uživatel

 

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