Nej, det er efter min mening ikke tilstrækkeligt. Hvis der var tale om konsistens ville jeg måske være enig, men det er der ikke.
Lad os tage tilfældet med denne tråd: Jeg læser spørgsmålet og tænker:
"Det må da være fordi, PHP ser strengen som bytes og tæller derefter".
Så får jeg tanken:
"Der er da vist en streng-splitter-funktion, så man kunne tælle elementer i det resulterende array. Gad vide, om den er 'byte-safe'?".
Jeg hopper op til strengfunktionerne på php.net og finder
str_split. Her finder jeg ingen 'disclaimers', men teksten i
#5. Derfor tjekker jeg funktionen
strlen, som spørgsmålet drejer sig om. Her finder jeg følgende, tydelige notice:
Note:
strlen() returns the number of bytes rather than the number of characters in a string.
Her ligger tanken jo snublende nær, at
str_split på dette punkt adskiller sig - men det ville selvfølgelig forudsætte en passende konsistens, som ikke synes tilstede.
En eller anden i Zend synes at være af den opfattelse, at det er et stykke info, som fortjente at blive nævnt under den ene funktion. Enten har andre opdateret de øvrige strengfunktioner, eller også finder personen det - af for mig uransagelige årsager - ikke fundet det passende at bringe samme info dér.
"str* funktioner angiver at det tager string som argument. Og flere af dem har endda hyperlink til beskrivelsen af string."Ja, jeg kan umiddelbart se
to(!) med link til String:
strlen og
strtr. Den første har, som allerede nævnt, en 'disclaimer', og ved den sidste står tydeligt anført:
<?php
//In this form, strtr() does byte-by-byte translation
//Therefore, we are assuming a single-byte encoding here:
$addr = strtr($addr, "äåö", "aao");
?>
Hvis disse to deldokumentationer var udtryk for en konsistent holdning fra Zend, ville jeg også mene, at "Det burde være tilstrækkeligt". Men det er det ikke, og det er såmænd blot det, jeg efterlyser.
Jeg er helt med på de historiske årsager til, at PHP ikke i udgangspunktet fik Unicode support - og at det altid er svært, grænsende til umuligt, at ændre den slags, når et sprog først er blevet udbredt. Jeg er også opmærksom på, at utf-8 ikke er 'det perfekte' tegnsæt, og at det i andre sammenhænge giver andre problemer.
Min pointe er blot, at PHP's dokumentation på dette punkt ikke er tilstrækkelig konsistent. Enten bør man vælge at være eksplicit - eller også bør man lade være. Det er uhensigtsmæssigt at være det ved nogle funktioner, men ikke ved andre.
Er det tvingende nødvendigt? Det er der jo ikke meget, der er.
Vil det være mindre forvirrende for folk, der ønsker at lære PHP - og for folk, der har brug for et hurtigt opslag? Det ved jeg ikke objektivt, men jeg mener, der er god grund til at tro det.