Precisamente hace más de diez años dejé de interesarme por PHP. No lo he vuelto a tocar desde entonces. Y doy fe que está irreconocible.
Una de las razones por la que dejé PHP era su falta de soporte nativo para cadenas Unicode. No me parecía normal que un lenguaje específico para la web no fuera capaz de decirme nativamente que la cadena "caña" tenía 4 letras en lugar de 5. Luego me paseaba por Internet y podía intuir como el programador no lo estaba teniendo en cuenta: cadenas cortadas contando letras pero que PHP contaba en bytes y el resultado era un poco mojibake (cortas "caña" por hasta las 3 primeras letras y el resultado no era "cañ" sino era "ca" seguido de cosas raras).
Lo de las funciones mb_* me parecía un poco guarro. Un hack que te podía explotar en las manos, más que nada si sobrecargabas las funciones nativas por ellas y se mezclaba código: trozos de código donde las funciones cuentan letras con otros trozos en donde cuentan bytes.
Hablo de que dejé PHP en tiempos en donde se abandonó PHP 6. Una versión fantasma que existió. ¿Cuantos de vosotros la recordáis? Por fin PHP soportaría cadenas Unicode. És más, ¿cuantos de vosotros sabíais que los primeros espacios de nombres en PHP se separaban con "::" en lugar de "\"? Tengo todavía código PHP con cosas como "foo::bar()". Así fue PHP 6.
No me hagáis mucho caso. Hace mucho tiempo de esto y yo no soy programador, pero me pregunto: ¿Como se puede seguir usando PHP (confiando en sería más adecuado porque usar… se usa) hoy en día si no es capaz de hacer esto? ¿O sí se puede? ¿Importa?
Bash:
v='caña'; echo ${#v} # 4
JavaScript:
'caña'.length // 4
Python:
len('caña') # 4
PHP:
strlen('caña') // 5