Invalid range end
Zdenek Pytela
letty na mrakoplas.phil.muni.cz
Pátek Únor 7 20:20:46 CET 2003
Dobrý den či večer,
rád bych se dozvěděl, co přesně znamená
Invalid range end
nebo česky
Nepřípustný konec rozsahu
Projevuje se to jako estetická vada ve squirrelmailu, ale nejmenší kód je
asi takovýto:
<?php
$locale="cs_CZ";
setlocale (LC_ALL,$locale);
echo $locale;
echo "<br><hr>";
$string="";
echo "Testing 237-240";
echo "<br>";
if (! ereg("[\237-\240]", $string))
echo "OK";
echo "<br><hr>";
echo "Testing 240-241";
echo "<br>";
if (! ereg("[\240-\241]", $string))
echo "OK";
echo "<br><hr>\n";
?>
Původně byl problém nalezen jenom při použití jiných locales jiných než
en_US, ale v tomto příkladě se projevuje i s en_US.
Warning: Invalid range end in ereg-test.php on line 14
Tipoval bych, že vázne komunikace mezi php a glibc, které některé znaky ze
znakové sady ohlásí jako neznámé, ale je to výstřel dost naslepo.
Je to chyba nebo vlastnost? Projevuje se totiž různě s různým nastavením
locales i s různými verzemi glibc a php.
Rád bych hlavně lokalizoval problémové místo.
Oblíbený seznam bookmarků google odkazuje hlavně na stránky, na nichž je
tento text právě jako varování od php interpreta, nikoli popis a řešení
problému.
Na http://sources.redhat.com/ml/libc-alpha/2000-08/msg00016.html
se sice píše něco o tom, že glibc 2.1.3 se nevyrovnává s rozsahy, které
těsně sousedí, ale nejmenší glibc, na kterých to pozoruji, je 2.2.5,
a to ještě silně redhatem opatchovaná (php verze 4.1.2-7.3.6), pak ale
i na celkem čerstvé 2.3.1 (php 4.2.2-13).
--
--Zdeněk Pytela, <letty na mrakoplas.phil.muni.cz>
Další informace o konferenci Linux