tipos - PHP-añade guiones bajos antes de mayúsculas
tipos de variables que utiliza php (5)
¿Cómo puedo reemplazar un conjunto de palabras que parecen:
SomeText
a
Some_Text
?
Esto se puede lograr fácilmente usando una expresión regular:
$result = preg_replace(''//B([A-Z])/'', ''_$1'', $subject);
Una breve explicación de la expresión regular:
- / B afirma la posición en un límite de palabra.
- [AZ] coincide con cualquier carácter en mayúscula de AZ.
- () envuelve el partido en un número de referencia posterior 1.
Luego reemplazamos con ''_ $ 1'', lo que significa que reemplazamos la coincidencia con un [subrayado + referencia inversa 1]
La forma más sencilla de hacerlo es con un reemplazo de expresiones regulares.
Por ejemplo:
substr(preg_replace(''/([A-Z])/'', ''_$1'', ''SomeText''),1);
La llamada al substr es eliminar un ''_'' inicial.
$result = strtolower(preg_replace(''/(.)([AZ])/'', ''$1_$2'', $subject));
Convierte:
HelloKittyOlolo
Declaration
CrabCoreForefer
TestTest
testTest
A:
hello_kitty_ololo
declaration
crab_core_forefer
test_test
test_test
$s1 = "ThisIsATest";
$s2 = preg_replace("/(?<=[a-zA-Z])(?=[A-Z])/", "_", $s1);
echo $s2; // "This_Is_A_Test"
Explicación:
La expresión regular utiliza dos aserciones de look-around (un look-behind y otro look-ahead) para encontrar puntos en la cadena donde se debe insertar un guión bajo.
(?<=[a-zA-Z]) # a position that is preceded by an ASCII letter
(?=[A-Z]) # a position that is followed by an uppercase ASCII letter
La primera afirmación se asegura de que no se inserta ningún guión bajo al comienzo de la cadena.
<?php
$string = "SomeTestString";
$list = split(",",substr(preg_replace("/([A-Z])/",'',//1'',$string),1));
$text = "";
foreach ($list as $value) {
$text .= $value."_";
}
echo substr($text,0,-1); // remove the extra "_" at the end of the string
?>