explode es sensible a mayúsculas y minúsculas…
Y me acabo de dar cuenta! Después de re-tantos años de usarlo. Cierto es que el uso más común de explode es trozar pizzas, como lo ejemplifica el manual de PHP:
1 2 3 4 5
| # Example 1
$pizza = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);
echo $pieces[0]; // piece1
echo $pieces[1]; // piece2 |
Pero no siempre se aplica así. Estaba recién cortando cadenas de texto con la desfachatez que dan años de circo:
1 2 3 4
| $name = 'Audi A4 1.9 TDI 130 Quattro Sport 5dr';
$tok = 'AUDI';
$model = explode($tok, $name);
$model = strtok($model[1], ' '); |
Lo anterior debe dar el modelo: “A4″. O debiera, si explode no fuera a sensible a mayúsculas y minúsculas. Pero como lo es me quedo sin poder determinar el modelo del autazo.
Tuve que ir al manual de PHP http://php.net/manual/en/function.explode.php para convencerme. Y sorpresa, no dice nada al respecto! Ya podría echarle la culpa a alguien si se perdía plata
Hay una página de manual de PHP alternativa en que un usuario lo comenta y propone una función explodei, que es case-insensitive:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| <?php
/**
siavash79_99 at yahoo dot com
19-Nov-2003 05:24
here is a tested case-insensitive explode I named it explodei()
works cool :-)
**/
function explodei ($separator, $string, $limit = false )
{
$len = strlen($separator);
for ($i = 0; ; $i++)
{
if (($pos = stripos($string, $separator )) === false
||
($limit !== false && $i > $limit - 2 ))
{
$result[$i] = $string;
break;
}
$result[$i] = substr($string, 0, $pos);
$string = substr($string, $pos + $len);
}
return $result;
}
/**
If your php version is < 5, you'll need to add stripos() to your script.
See http://php.net/function.stripos
**/
?> |
Fuente: http://theserverpages.com/php/manual/en/function.explode.php#37563
A simple vista parece correcta, pero hay una manera más simple y rápida:
Sí, usando explode en cadenas con igual case debiera funcionar. Es un truco que se usa bastante en consultas a bases de datos cuando interesa considerar mayúsculas y minúsculas como iguales.
1
| SELECT * FROM tabla WHERE UPPER(esto) = UPPER('Esto'); |
Ja! Lo comenté en php.net y ahora forma parte del manual en línea de PHP. 
clap, clap, clap, gracias, clap, clap, clap, gracias, gracias.
