Autor | Zpráva | ||
---|---|---|---|
Petr1234 Profil * |
#1 · Zasláno: 2. 4. 2008, 19:09:42
Zdravím,
chci si z databáze vytáhnout první písmeno jmen. Použil jsem na to funkci substring(jmeno,1,1). Funguje bezvadně, ale bohužel neřeší české znaky. Jako kdyby tam ani takové záznamy nebyli. D9ky za radu |
||
nightfish Profil |
#2 · Zasláno: 2. 4. 2008, 19:24:54 · Upravil/a: nightfish
pokud používáš utf-8, tak mb_substr
EDIT: chyba, nepodíval jsem se, že je dotaz v databázích, ne v PHP jinak co se substringu v mysql týká, tak This function is multi-byte safe. neboli i s utf-8 by to mělo fungovat bez problémů (pokud ovšem mysql ví, že data jsou v utf-8) |
||
Časová prodleva: 8 měsíců
|
|||
igamenir Profil |
#3 · Zasláno: 21. 11. 2008, 15:23:55
zdravím, mám podobný - vytáhnu si jako ukázku textu prvních 200 znaků, ale vytahuje kratší texty a občas se stane, že vytáhne pouze polovinu znaku posledního znaku... a že to je v utf8 ví určitě protože to má nastavena jak databáze, tak tabulka, tak sloupec, tak i php .... prostě všude v tom dělám.
Je nějaké jiné řešení než vytáhnout dvojnásobek znaků a pak to oříznout v php přes mb_substr ? dík |
||
Kajman_ Profil * |
#4 · Zasláno: 21. 11. 2008, 15:44:55
A máte stabilní verzi mysql?
|
||
nightfish Profil |
#5 · Zasláno: 21. 11. 2008, 16:08:15
„vytáhnu si jako ukázku textu prvních 200 znaků“
pomocí substring() v mysql? pokud ano, tak není důvod, aby to nefungovalo |
||
Časová prodleva: 4 dny
|
|||
igamenir Profil |
#6 · Zasláno: 25. 11. 2008, 10:19:39
přes mysql, když jsme v sekci pro databáze, ale když jsem zkoušel vytáhnout víc a v php to oříznout na požadovaný pořčet, tak to dělá stejnou chybu, ať už se substr nebo mb_substr.
ale na radu kamaráda jsem zavedl v php přes strrpos ořezávání k poslední mezeře, čímž se zbavím nejen půlznaků ale i půlslov a vypadá to líp - doporučuji. nicméně by mne zajímalo čím to asi je. |
||
nightfish Profil |
#7 · Zasláno: 25. 11. 2008, 10:23:04
napadají mě snad jenom špatně nastavené collations připojení/databáze/tabulky/sloupce
|
||
Časová prodleva: 7 měsíců
|
|||
heptau Profil * |
#8 · Zasláno: 12. 6. 2009, 08:27:43
V PHP bude asi potreba nastavit nasledujici:
mb_regex_encoding("utf-8"); mb_internal_encoding("utf-8"); V MySQL netusim - pouzivat Postgres a tam jsem nic nastavovat nemusel. |
||
Časová prodleva: 4 roky
|
|||
studiob Profil |
#9 · Zasláno: 17. 6. 2013, 07:37:26
Díky, přesně to mi pomohlo. Použil jsem toto:
mb_regex_encoding("utf-8"); mb_internal_encoding("utf-8"); mb_substr($input, 0, $length); Bez použití nastavení UTF se mb_substr chová s češtinou stejně (blbě) jako substr. |
||
Tori Profil |
#10 · Zasláno: 17. 6. 2013, 07:57:28
studiob:
„Bez použití nastavení UTF se mb_substr chová s češtinou stejně (blbě) jako substr.“ Knihovna mbstring používá jako výchozí kódování Latin1 (je to napsané někde v manuálu), takže odlišné kódování se buď musí zadat při každém volání funkce: mb_substr($input, 0, $length, 'UTF-8'); , anebo nastavit pro celý skript (buď funkcí mb_internal_encoding nebo v php.ini).
|
||
Časová prodleva: 11 let
|
0