|
[ e7num @ 10.05.2003. 19:41 ] @
| Pozdrav:
Interesuje me kako da koristim patterns za stringove koje zelim da pronadem i zamenim. Nasao sam funckiju ereg i slicne varijante toga eregi_replace itd. Trazio sam na netu gde objasnjava lepo kako da se koriste ali svi samo napisu jedan primer kao ovaj Code: eregi("^[a-z0-9_]+@[a-z0-9-]+.[a-z0-9-.]+$", $Email) koji kao sto se vidi proverava da li je string u email formatu. Ali sta je tacno ^ i [a-z0-9_] i tako dalje.
Ovo mi treba da napravim funckiju koja ce body emaila pretraziti i pronaci URL i zameniti sa URL-om koji se otvara u novi prozor koristeci target="_blank". Kako je ovo najbolje i najpametnije uraditi.Ako koristim eregi_replace() kako da to uradim da doda <a href=" taj link koji je pronasao">taj link koji je pronasao</a>.Primetio sam da i ovaj forum to ima.
Hvala... |
[ CONFIQ @ 10.05.2003. 19:58 ] @
evo ovo odavno što sam napisao
Code:
$str = eregi_replace("(^|[[:space:]])(http://[^[:space:]]{1,})([[:space:]]|$)","\\1<a href=\"\\2\" target=\"_blank\">\\2</a>\\3",$str);
$str = eregi_replace("(^|[[:space:]])(ftp://[^[:space:]]{1,})([[:space:]]|$)","\\1<a href=\"\\2\" target=\"_blank\">\\2</a>\\3",$str);
$str = eregi_replace("(^|[[:space:]])(www.[^[:space:]]{1,})([[:space:]]|$)","\\1<a href=\" http://\\2\" target=\"_blank\">\\2</a>\\3",$str);
[ e7num @ 10.05.2003. 20:42 ] @
e,hvala ti na speed odgovoru,ali ajd mi molim te reci cemu sluzi \\2 i \\3 posto vidim da nisu escape chars. I sta sad tacno to daje i sta je [:space:]. Nekontam na koji fazon pises taj patern.Probao sam kod i radi sve ok ali ne znam kako radi.
hvala covo!
[ CONFIQ @ 10.05.2003. 21:36 ] @
evo ti par primera sa php.net/ereg-replace
1) Example 1. ereg_replace() Example
Citat: $string = "This is a test";
echo ereg_replace (" is", " was", $string);
echo ereg_replace ("( )is", "\\1was", $string);
echo ereg_replace ("(( )is)", "\\2was", $string);
Odnosno ako imaš
ereg_replace ("(jedan)(dva)(tri)", "\\1\\2\\3", $string);
\\1 = jedan
\\2 = dva
\\3 = tri
2) Example 3. Replace URLs with links
Citat: $text = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]",
"<a href=\"\\0\">\\0</a>", $text);
što se tiče space-a :alpha: i :alnum: ne mogu trenutno da nađem na php.netu i ako sam siguran da je tamo negde...
nažalost moram ODMAH da krenem pa potraži na google tipa site:php.net alpha alnum space
[ 5h0ck @ 09.10.2008. 10:11 ] @
Jel može meni neko da pomogne sa ereg() :(
Hoću da proverim da string sadrži samo a-z, A-Z, 0-9 i _.
pokušao sam ovo:
Code: (!ereg('[a-z0-9]',$_POST['url']))
ali mi dozvoljava uzvičnike, @ i još neke karaktere ...
[ Man-Wolf @ 09.10.2008. 18:51 ] @
Sto ne radis sa preg_replace, cini mi se da je eregi izasao iz upotrebe.
Code:
if (preg_match_all("/[A-Za-z0-9_]+/", $neki-string, $match))
{
// String je ok
}
[ 5h0ck @ 09.10.2008. 21:45 ] @
pa isto mi se hvata...
opet, ako je $nekistring = "!adasd" - sve je ok!
opet, ako je $nekistring = "!#$%&adasd" - sve je ok!
opet, ako je $nekistring = "afsdfsf" - sve je ok!
a ako je $nekistring = "!#$%/(&" - nije ok!
nije mi jasno ...
[ Tudfa @ 10.10.2008. 04:36 ] @
Citat: 5h0ck: pa isto mi se hvata...
opet, ako je $nekistring = "!adasd" - sve je ok!
opet, ako je $nekistring = "!#$%&adasd" - sve je ok!
opet, ako je $nekistring = "afsdfsf" - sve je ok!
a ako je $nekistring = "!#$%/(&" - nije ok!
nije mi jasno ...
Deo koda koji ti je Man-Wolf predlozio radi kako treba ...
U prvom primeru u $match ce biti "adasd", sto ti je valjda i cilj.
U drugom "adasd", u trecem "afsdfsf", a u cetvrtom nece biti rezultata, sto je totalno ispravno s' obzirom na dati kod ...
E sad je pitanje sta ti zelish da dobijes kao rezultat u cetvrtom primeru ?
Inache ako ti smetaju karakteri tipa !#%, mozes da ih sve zamenis sa "" pomocu preg_replace.
Pogledaj ovo : http://en.wikipedia.org/wiki/Regular_expression
pozZz
[ 5h0ck @ 10.10.2008. 08:22 ] @
E pa u tome i jeste problem, što meni smetaju "!#$%&". :)
Sada sam skapairao da funkcija traži da u stringu te karaktere. Ako su tu - onda je ok. Ako ih nema, onda nije ok.
A meni treba, ako su samo ti karakteri u stringu - onda ok.
Mogu ja to da uradim sa preg_replace, ali se bojim da postoji previše karaktera za koje bi morao da radim replace...
[ Jbyn4e @ 10.10.2008. 12:53 ] @
Znaci tebi treba ako sadrzi bilo koji osim navedenih, da to ne valja... Treba ti znaci da ispitujes da li string sadrzi negaciju od a-z itd. sto se postize u regexp-u sa:
Code:
[^a-z]
Direktan primer sa rezultatima:
echo eregi("[^a-z][^A-Z][^0-9]","234");
echo eregi("[^a-z][^A-Z][^0-9]","eee");
echo eregi("[^a-z][^A-Z][^0-9]","#$%");
1
echo eregi("[^a-z][^A-Z][^0-9]","a#$%$");
1
echo eregi("[^a-z][^A-Z][^0-9]","^&^*7%*");
1
echo eregi("[^a-z][^A-Z][^0-9]","AUIYIU");
echo eregi("[^a-z][^A-Z][^0-9]","AUI&*&");
1
Kao sto vidis u gornjem primeru, gde ima nestandardnih karaktera (koji nisu a-z,A-Z i 0-9)- to bude nadjeno - a to je slucaj koji ti zelis da izbacis, tj da nekome kazes da SADRZI karaktere koji tebi ne trebaju ili nisu dozvoljeni.
[ Jbyn4e @ 10.10.2008. 13:25 ] @
Evo samom sebi samo jos da kazem :) da postoji mnoooooooogoo brzi nacin za replace tih karaktera. U pcre postoji \W koji nalazi karakter koji nije a-zA-Z0-9_. Znaci prosta zamena sa preg_replace ce ti dati string kakav zelis.
Primer:
echo preg_replace("/\W/","","te^%%^%$^%st^%$%");
test
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|