| Autor | Zpráva | ||
|---|---|---|---|
| alfa47 Profil |
#1 · Zasláno: 10. 10. 2013, 20:51:09
strlen('soľ') vrati 4 znaky, asi treba pouzit mb_strlen("soľ", "utf-8"), ale preco to tak komplikuju?
|
||
| pcmanik Profil |
#2 · Zasláno: 10. 10. 2013, 20:52:11
alfa47:
Nič nekomplikujú, ide o to že funkcia strlen počitá dvojbitové znaky ako dva znaky namiesto jedného teda, všetko čo má diakritiku sú dva znaky. |
||
| alfa47 Profil |
#3 · Zasláno: 10. 10. 2013, 21:12:17
pcmanik:
a teraz v milion ztrojakoch pouzivam strlen na diakritiku, neda sa nejako pretazit povodna strlen funkcia, na tu UTF-8 funkciu? Alebo to musim teraz vsade rucne zmenit? Vopred dakujem velmi pekne. |
||
| Jan Tvrdík Profil |
#4 · Zasláno: 10. 10. 2013, 21:21:18
alfa47:
„neda sa nejako pretazit povodna strlen funkcia, na tu UTF-8 funkciu?“ Dá, ale o takovou příšernost se prosím nepokoušej. Rozbiješ tím všechny normální PHP skripty, který předpokládají, že funkce strlen vrací počet bytů, nikoliv počet znaků. |
||
| han5vk Profil |
alfa47:
„to musim teraz vsade rucne zmenit?“ Chytrejšie editory by mali zvládať automatické prepisovanie. Napríklad notepad++ to má jednoducho pri vyhľadávaní, zadáš iba search : "strlen" a replace : "mb_strlen". Dá sa vybrať či prepísať jeden, práve nájdený výskyt reťazca; či to prepísať v celom dokumente; alebo vo všetkých otvorených dokumentoch. |
||
| Tori Profil |
#6 · Zasláno: 10. 10. 2013, 22:02:13
han5vk:
„zadáš iba search : "strlen" a replace : "mb_strlen".“ V tomto případě je ještě nutné na začátek skriptu přidat mb_internal_encoding('UTF-8'); - výchozí kódování je totiž Latin1.
|
||
| peta Profil |
#7 · Zasláno: 11. 10. 2013, 07:50:54
alfa47:
function strlen($str) {mb_strlen($str, "utf-8");}
|
||
| Amunak Profil |
#8 · Zasláno: 11. 10. 2013, 08:20:01
peta:
Fatal error: Cannot redeclare strlen() on line 1 |
||
| Jan Tvrdík Profil |
#9 · Zasláno: 11. 10. 2013, 08:26:54
peta:
Když neumíš základy PHP, tak se prosím tě radši nevyjadřuj. Díky |
||
| peta Profil |
Amunak, Jan Tvrdík: klidne muze pouzit http://cz2.php.net/override_function , proc jsi to nenapsal? Nebo http://cz2.php.net/manual/en/function.rename-function.php . Treba nejses tak chytrej, jak se snazis ze sebe delat tim, ze utocis na dalsi prispevatele.
|
||
| Amunak Profil |
peta:
Proč jsi to tedy nepostnul rovnou, a poslal jsi sem blábol, který vyhodí fatal error? Navíc to, že to jde, ještě neznamená, že je to dobrý nápad. A on to taky není dobrý nápad. Navíc to vyžaduje rozšíření PHP (APD), které běžně není k dispozici a musí se doinstalovat. Na override jde jinak použít i namespace, ale je to pěkná prasárna. |
||
| Joker Profil |
#12 · Zasláno: 11. 10. 2013, 10:23:06
alfa47:
Bylo by dobré říct jednu věc, kterou tu zatím nikdo přímo nenapsal: Ta funkce strlen nepočítá špatně, jen dělá něco jiného než chcete. Vrací velikost řetězce v bajtech. Proto je taky chyba natvrdo předefinovávat strlen na mb_strlen. Nebude pak správně fungovat kód očekávající, že strlen vrátí velikost řetězce v bajtech. Jan Tvrdík: „Když neumíš základy PHP, tak se prosím tě radši nevyjadřuj. Díky“ Je to marný, je to marný, je to marný. peta: Předpokládám, že ten postup nenapsali schválně, protože je to špatný postup. „utocis na dalsi prispevatele“ Když další přispivatelé navrhnou špatný postup a ještě blbě realizovaný, nějaké to útočení si zaslouží. |
||
|
Časová prodleva: 5 dní
|
|||
| alfa47 Profil |
#13 · Zasláno: 15. 10. 2013, 23:14:40
Dakujem vam pani :))) Vsetko jasne, a hlavne vdaka Tori za mb_internal_encoding('UTF-8'); Dikes!
|
||
|
Časová prodleva: 12 let
|
|||
0