Autor Zpráva
peta
Profil
retezec (neco nahodne vygooglovane, ozesane na az._-):

g-4tc5vdp5yc718-g-g-gb-wwt654tg-ebad9b9badch71v5v58ea-71ej6g4cgsqc5ay-ac-....-wt654tg-4tg-71ytg-acfk-r-e.-7c5d-h.-718-fiebadptv5ycfidors658eadp

$str = ereg_replace("[_\.\-]{2,}",'-',$str);

$str = ereg_replace("[_\-\.]{2,}",'-',$str);


Podle http://www.regexp.cz/
[_\.\-]{2,} ... shoduje se
[_\-\.]{2,} ... neshoduje se
A pritom je to uplne stejne, jen otocene :)
Hlavni je, teda, ze presne to sedi i s PHP, -....- mi nahradi --- nebo - , podle toho, jaky vyraz pouziji.

Jaky je rozdil mezi obema vyrazy?
AM_
Profil
spis nez rozdil je v nich stejna chyba ;) reg.vyrazy je lepsi davat do apostrofu ' misto uvozovek " a vsechna zpetna lomitka zdvojovat. PHP si totiz zpetna lomitka nejdriv interpretuje sam (a v uvozovkach toho interpretuje vice nez v apostrofech), takze ereg pak dostane jinou promennou, nez jsi chtel.
peta
Profil
AM_ Zkousel jsi to?

$str = ereg_replace("[_\.\-]{2,}",'-',$str);
$str = ereg_replace("[_\-\.]{2,}",'-',$str);

$str = ereg_replace('[_\.\-]{2,}','-',$str);
$str = ereg_replace('[_\\.\\-]{2,}','-',$str);
$str = ereg_replace('[_.-]{2,}','-',$str);

$str = ereg_replace('[_\-\.]{2,}','-',$str);
$str = ereg_replace('[_\\-\\.]{2,}','-',$str);
$str = ereg_replace('[_-.]{2,}','-',$str); //Warning: ereg_replace() [function.ereg-replace]: REG_ERANGE in C:\wamp\www\mracekcms3\function_inc.php on line 320


Jsem si nevsiml, ze by se neco vyrazne zmenilo proti memu dotazu :)
nightfish
Profil
převeď svůj problém na Perl compatible RE (preg_*) a pokud problém přetrvá, můžeme se o tom bavit
POSIXové budou od PHP 5.3 zavržené, a tedy nemá smysl se jimi více zabývat
AM_
Profil
peta
Co ta hromada pokusu? prehlidka chyb? tohle [_-.] je naprosty syntakticky paskvil. tohle $str = ereg_replace('[_\\.\\-]{2,}','-',$str) je pravde asi nejblize a mel by fungovat. Pouzivani perl regexp muzu jen podepsat, takze preg_replace('/[_\\.\\-]{2,}/', '-', $str) by melo fungovat.
peta
Profil
nightfish prazak? :) jinak dik za informaci, to znamena predelat par scriptu. Hm.
Tak aspon, ze preg funguje. Nad reg_ jsem prave stravil asi 20 minut, co jsem zkoumal, proc mi to nejede, vzdyt mam syntaxi ok a pak jsem zacal prehazovat znaky a kouslem to jelo :)

$str = '----g@4TC5vDP5Yc718+GÝG?gb"wwt654Tg+EbAD9B9BADCh71V5V58eA 71Ej6g4cgsQC5AY aC§ .... wt654Tg#4Tg#71YTg@AcFk r e. 7C5dh. 718@FiEbADPtV5á ä â ć č ď é ě ë í î ĺ ľ ń ň ó ô ö ő ŕ ř ś š ť ú ůü ý ź žY c FIdORS658eADP.,,---';
// nahodny retezec z google, postupnymi upravami jsem z nej chtel generovat jmeno pro soubor, konecna faze je tan vyraz.

$str = preg_replace('/[_\\-\\.]{2,}/', '-', $str); //ok
$str = preg_replace('/[_\\.\\-]{2,}/', '-', $str); //ok
$str = preg_replace('/[_\-\.]{2,}/', '-', $str); //ok
$str = preg_replace('/[_\.\-]{2,}/', '-', $str); //ok
$str = preg_replace('/[_.-]{2,}/', '-', $str); //ok
$str = preg_replace('/[_-.]{2,}/', '-', $str); //Warning: preg_replace()

AM_
[_-.] je naprosty syntakticky paskvil.
Mozna ano, mozna ne. Jsou urcite moznosti povolene jen v [].
Normalne bych to nepouzil, je to pouze jedna z moznosti, kterou by mohl zminit jako reseni. Tak jsem chtel pouze vypsat, ktere vsechny jsem zkousel.
AM_
Profil
peta
první dva zápisy jsou zcela v pořádku a zcela rovnocenné.
další dva fungují náhodou také, protože PHP parser řetězců když se setká s neznámou escape sekvencí (třeba \.), tak ji uloží jako \. ; není to ale úplně korektní zápis, pro jistotu i čistotu je lepší všechna lomítka zdvojit.
pátý zápis ti funguje trochu zázrakem, vzhledem k tomu, že znaky . a - mají speciální význam a vůbec je nemáš oescapované. Dokonce se domnívám, že by fungovat neměl - zápis [_.-] znamená podtržítko nebo libovolný znak nebo pomlčka (kterou, když kolem ní nejsou znaky, které by mohla považovat za horní hranici, to možná chytře vezme jako pomlčku). Takže tenhle výraz by měl vyhovovat libovolnému řetězci o délce 2+.
Šestý výraz je hrůza, [_-.] by se při troše dobré vůle dalo vyjádřit jako rozmezí znaků od podtržítka až po libovolný znak. Což nedává žádný smysl, docela pochopitelně to už tohle nezkousne :)
peta
Profil
AM_
[.]
.
to jsou 2 rozdilne zapisy, do [] se pise vypis znaku, cili . je tecka bez zadneho specialniho vyznamu. Reg. vyrazy znam, ne? :) Proto mne trapilo to uplne nahore, ze nejelo. To mam dobre, preci :)
Dobry, nechame to pritom, ze ereg nefunguje korektne a jen preg.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: