eregi_replace

Zajimalo by me proc vsechny eregi_replace co sem mel na jednej strance uz nejdou..?? a pritom v apache fachci uplne normalne..moch by nekdo poradit jak se zapisuje tahle funkce aby to slo i tady??
no ja nevim, me to facha.
nemas doma nahodou php skompilovany s pcre syntaxi? tady je (jako snad vsude jinde:) normalne posix (a preg_* funkce pro pcre). kdyztak napis nejaky priklad, docela by me to zajimalo..:)
tak treba tohle($kecy je promenna obsahujici text a $USER je promenna s nickem kterej bude <b>):

$kecy = EregI_Replace("$USER", "<b>$USER</b>", $kecy);

//a tohle me tu kdysi nekdo poradil a fachcilo to docela bez problemu
$kecy = EregI_Replace("(www\..+\.[^[:blank:],]{2,3})", "http://\\1", $kecy);
$kecy = EregI_Replace('(http://[^[:blank:],]+\.[^[:blank:],]{2,3}(\?[^[:blank:],]*){0,1} )', "<a href=\"\\1\" > \\1</a>", $kecy);
$kecy = EregI_Replace('([[:alpha:]._-]+@[[:alpha:]._-]+)', "<a class='echo' href=\"mailto:\\1\" > \\1</a>", $kecy);
$kecy = Wordwrap($kecy,78,"\r\n",1);

...fakt nevim cim to nechce se me tu stranku moc prekopavat jinak tam zas nepujde nic a budu muset jet vodznova...diky predem za rady :-))
tak fakt nevim, zadnou chybu tam nevidim.. zkousel jsem to na wz a de to v pohode..
a nemuze to byt treba tim ze sem do toho primichal i funkci strtr?? mam tam pole $rplc a vypisuju to vsechno strtr($kecy, $rplc) . "\n" ... treba se tyhle dve funkce nemaj radi :-) .. leda ze bych to vsechno nakonec vtesnal do eregi_replace coz se me nechce strtr se me zda uspornejsi
to je nejaka picovina, nechces sem hodit ten skript celej? :)
jak se vlastne projevuje ze to nejde?
rekl bych ze ta chyba bude nekde uplne jinde nez ji hledas (jako ostatne vetsina podobnejch chyb:)
jesti tam chces zrusit strtr() tak doporucuju spis str_replace nez re, je to mnohem rychlejsi. ale myslim ze je to zbytecny, tou funkci to urcite nebude...
no mas pravdu zkousel sem to na wz bez toho vobalu jen to eregi_replace a strtr a fachci to...chyba bude jinde...leda ze bych tu stranku udelal znova coz se me vopravdu chce..jo a celej zdrojak ti sem radsi hazet nebudu spravce by me zabil a ty bys to tu lustil do zejtra :-)
..neni treba mozny ze toho je na to replacovani moc??:-) prece jenom $rplc array byl pomerne obsahlej a dyz sem to nahazel na 18radku eregi_replace hazelo to chybu REG_EPAREN .. sice nevim co to je ale nefachcilo to :-)
no to je ze mas chybu v tom reg.vyrazu :), nejspis nejaky ridici znaky tam kde nemaj bejt..
strtr nijak omezeny neni (snad jenom pameti), a 18 radku neni zas tolik..
no klidne sem ten zdrojak hod (nebo mi ho posli mailem, hrozne rad se hrabu v cizich skriptech:)
skus proste zrusit tu funkci strtr a vsechny ereg_replacy a uvidis jestli to pujde.
no kdybych cely ty replacy a strtry smazal tak nic nepoznam :-))) jasne poslu ti to ale ted to du necim zapit, pak sem v tom este budu chvili rejpat a jesi to ani potom nepude tak se budes mit v cem hrabat :-)
myslim ze mas spravnej pristup, sedet v patek vecer u kompu je znakem dost vazny deformace mozku.. asi se pridam a vyrazim do erroru :)
tak uz to mam .. eregi replace byla definovana uz pred tim nez byla vubec zadana hodnota $kecy kerou replacuju...no...to potesi :-)) a este jak je to s tim zachovanim velikosti pismen pri replacovani?? eregi_replace("$promenna", "\\1", $kecy) .. takle me to vypise \1 .. co je na tom teda spatne?
dela to problemy hlavne pri logovani dotedka sem neprisel na to jak to naprogramovat aby se moch treba LYNX prihlasit i kdyz napise lynx ..
jedna promenna $USER je to co uzivatel napise do formulare a druha je to co vyleze z databaze .. select .. where nick = $USER .. no a to pochopitelne znamena ze $USER2 nebude mit hodnotu -> $USER != $USER2 i kdyz je to v podstate to samy jenze PHP proste nechape co ja potrebuju :-))
no ja nevim jestli to chapu, jsem trochu zkalenej ;), ale myslim ze funkce eregi_replace se na tohle fakt nehodi..
ten prvni problem je asi v tom ze v $promenny nemas zadnou cast (nebo jak se tomu cesky rika:) na kterou se muzes odvolat \\1..proste tam asi nemas zadny zavorky.
na celej vyraz muzes odkazat referenci \\0, ale eregi_replace($promena,"\\0",$kecy) dela uplny hovno (resp. nic resp.nahradi retezec sebou samym). s tim logovanim je asi nejlepsi prevest obe promenne na maly (nebo velky) pismena funkcema strtoupper() nebo strtolower() - a pak je porovnat:
if(strtolower($USER)==strtolower($USER2))...
pokud si nejses jistej v jakym formatu je to ulozeny v ty databazi. sam bych to asi radsi ukladal uz prevedeny a pak jenom preved to od uzivatele..
no ja du radsi spat, jestli sem ti odpovedel na neco na co ses neptal tak sory, moc o sobe nevim.
Mno jo jenze to me bohuzel nepomuze v tom vyhledavani nicku v databazi.. kdyz to nenajde nick nenajde to ani heslo a tim padem se heslo pri vstupu nebude schodovat s heslem v databazi :-(
jesi to nechapes uvedu priklad:

na prvni strance je formular kde je input USER (jmeno) a pass (heslo)..
pak se predaj data a nasleduje ...

$zaznam = mysql_fetch_array("SELECT * FROM `users` WHERE `nick` = '$USER'"); // nenajde nic pokud nejsou spravne i velikosti pismen a z toho vyplyva ->
$USER2 = $zaznam["nick"]; // nema hodnotu
$cpass = $zaznam["pass"]; // nema hodnotu

a dal uz sou jen podminky co kdy a jak s cim se ma rovnat atd .. chjo je to zapeklity .. a na to zes nebyl pri smyslech s me poradil to s tema strtolower coz me ani strizlivyho nenapadlo :-)
no s tou databazi je princip uplne stejnej, akorat musis pouzit mysql funkci lower() nebo lcase(), popr. upper() nebo ucase().
takze
$zaznam = mysql_fetch_array("SELECT * FROM users WHERE lcase(nick) = '".strtolower($USER)."'");
no nebo to muzes previst este pred tim nez to do ty databaze ulozis, zalezi na tom jestli potrebujes rozlisovat mezi malejma a velkejma u nicku.
este me napadlo:
"SELECT * FROM `users` WHERE `nick` = '$USER'"
s tema apostrofama u toho 'nick' (jestli je tam teda mas i v tom skriptu) to asi nebude fungovat (s jednou vyjimkou - 'nick'='nick' :-). 'users' je asi taky lepsi napsat users, at v tom nemas bordel...

koukam ze docela vedem diskusi :)
No tak at to pisu jak to pisu furt ta sama chyba: not a valid MySQL result resource .. na logovani se asi vykaslu precejenom sou i lepsi servery u kterych taky zalezi na velikosti pismen ale precejen dik za ty rady :-) du se venovat tomu problemu co sme tady resili puvodne ponevac ta stranka uz nejde vubec - proste nelze zvobrazit a ne ze by tam byl nakej header nebo presmerovani ktery by tu stranku presmerovavalo furt zpatky takze by se nezvobrazila.. proste si usmyslila ze nebude fungovat tak nefunguje a nikdo s tim nic nenadela .. mno tak hura do toho .. :-)
no ono to totiz ma bejt
$zaznam = mysql_fetch_array(mysql_query("SELECT * FROM users WHERE lcase(nick) = '".strtolower($USER)."'"));
s tou strankou ti asi neporadim, ale bude to urcite nejaka picovina..
kdyz tak to sem hod :-)
mas to v mejlu.. jesi si to budes chtit overit jak to fachci resp. nefachci v praxi muzu ti na chvilu dat pristupovy heslo do db :-)
tak samotna stranka ti fachcit bude ale pripoj za to jeste ?CR=USER=0&UID=999999main&DH=main aby se ti vubec neco zvobrazilo... coz vlastne znamena ze jakmile to ma vypsat nakejch 25 radku tim scriptem co zabira nakejch 65radku tak to asi nestiha :-) ... asi bych to mel skratit :-(
yes a s tim loginem uz to mam :-) byl tam jeste jeden sql prikaz SET `UID` .. WHERE `nick` = '$USER' ... a na dalsi strance bylo if $UID != $UID-z databaze - tak te to hopne zpatky na prihlaseni.. how easy that was :-))
ja mam apostrofy rad :-))
huuu thank you good god uz to bezi takze uz te dneska nebudu zatezovat votazkama a du spat c u za tejden a dik za rady nebejt tebe tak me nefachci cely dve stranky :-)
ehm tak precejenom..
$kecy = EregI_Replace("<", "<", $kecy); //bohdan:co je tohle?:)
$kecy = EregI_Replace(">", ">", $kecy); //bohdan:co je tohle?:)
..yees spravna votazka :-)) puvodne to prepisovalo na < a > ale delalo to problemy pri zobrazovani smajlu tak sem to udelal takle abych to nemusel mazat a All sem vodkoukal z xpointu kde se to takle zvyraznuje aby si toho vsichni vsimli :-)
&lt; a &gt; sem chtel rict
:)
no mas to fakt pekny...