utiliza tipos que nomenclatura manejo php regex string case-conversion

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 ?>