Portál AbcLinuxu, 9. června 2025 18:11


Dotaz: PHP: Překódování non-ascii na ascii

22.9.2010 18:42 Alf
PHP: Překódování non-ascii na ascii
Přečteno: 762×
Odpovědět | Admin

Zdravím,

potřebuji v PHP překódovat non-ascii znaky do ascii. Problém je, že nevím jak se toto konkrétně překódovává.

Původní řetězec: "testovací řetězec"
Překódovaný: "testovac\195\173 \197\153et\196\155zec"

Takto to má vypadat, předem děkuji za rady ;)


Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

23.9.2010 01:20 Viktor
Rozbalit Rozbalit vše Re: PHP: Překódování non-ascii na ascii
Odpovědět | | Sbalit | Link | Blokovat | Admin
iconv?
24.9.2010 11:44 volvox | skóre: 16
Rozbalit Rozbalit vše Re: PHP: Překódování non-ascii na ascii
Ano. Např.:

$ php -r 'echo iconv("UTF-8", "ASCII//TRANSLIT", "testovací řetězec");'
24.9.2010 12:26 razor | skóre: 33
Rozbalit Rozbalit vše Re: PHP: Překódování non-ascii na ascii
tohle tazatal ale vlastně nechce. On chce z nějakých důvodu převést: testovací řetězec => testovac\x\y \x\y™et\x\y›zec kde \x je první byte znaku v kódování utf8 a \y je druhý byte znaku v utf8. K čemu to je dobrý naštěstí nevim.
23.9.2010 18:47 Ash | skóre: 53
Rozbalit Rozbalit vše Re: PHP: Překódování non-ascii na ascii
Odpovědět | | Sbalit | Link | Blokovat | Admin
No strtr a str_replace asi na utf-8 nepůjdou, ale můžete použít preg_replace:
$string = "testovací řetězec";

echo preg_replace("/([ěščřžýáíé])/e",  "chr('92').ord('\\1')", $string);
Úplnost vstupní množiny znaků jsem neřešil.

Josef Kufner avatar 24.9.2010 22:15 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: PHP: Překódování non-ascii na ascii
echo preg_replace("/([^a-z0-9])/e",  "chr('92').ord('\\1')", $string);
Hello world ! Segmentation fault (core dumped)
24.9.2010 23:10 Alf
Rozbalit Rozbalit vše Re: PHP: Překódování non-ascii na ascii
Ano, to je přesně ono, děkuji :).
26.9.2010 14:17 Ash | skóre: 53
Rozbalit Rozbalit vše Re: PHP: Překódování non-ascii na ascii
Např. mezeru jste tuším překódovávat nechtěl, podtržítko nevím, takže pokud byla řeč o ascii, možná by se vám hodilo i
preg_replace("/([^[[:ascii:]])/e",  "chr('92').ord('\\1')", $string);
prostě tu vstupní množinu si pořešte.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.