¡Memoriza esta expresión regular PHP 5!

Los nombres de las variables, constantes, funciones, namespaces y clases PHP tienen que empezar por una letra o por un guión bajo, y luego pueden venir seguidas de un número arbitrario de letras, números o guiones bajos.

Esta etiqueta PHP tan importante se corresponde con la siguiente expresión regular:

^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*$

\x7f y \xff es la representación hexadecimal de los números enteros 127 y 255, respectivamente. \x7f-\xff viene a decir algo así como “cualquier carácter ASCII extendido de los comprendidos entre 127 y 255″.

¿Vamos con un ejemplo? Este script PHP CLI valida las etiquetas PHP disponibles en el array $labels:

#!/bin/php
<?php
// See ASCII table at http://www.ascii-code.com/

$labels = array('98-hello', 'hello-98', '?Robert', 'RobertÇ', 'bob', 'b ob', 'æÆ╣Ã');

foreach ($labels as $label) {
    if (preg_match('/^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*$/', $label)) {
        echo "$label es una etiqueta válida.".PHP_EOL;
    } else {
        echo "$label no es una etiqueta PHP válida.".PHP_EOL;
    }
}

Esta es la salida que genera:

98-hello no es una etiqueta PHP válida.
hello-98 no es una etiqueta PHP válida.
?Robert no es una etiqueta PHP válida.
RobertÇ es una etiqueta PHP válida.
bob es una etiqueta PHP válida.
b ob no es una etiqueta PHP válida.
æÆ╣à es una etiqueta PHP válida.