sheets hoja hallar google funcion extraer calculo php string

php - hoja - split google



¿Cómo explotar la cadena de derecha a izquierda? (10)

¿Por qué no dividir en ''-'', pero luego unir las dos primeras entradas de matriz para que vuelvan a estar juntas?

$split_point = '' - ''; $string = ''this is my - string - and more'';

¿Cómo puedo hacer una división utilizando la segunda instancia de $ split_point y no la primera? ¿Puedo especificar de alguna manera una búsqueda de derecha a izquierda? ¿Mejor enfoque simple?

Básicamente, ¿cómo exploto de derecha a izquierda? Quiero recoger la última instancia de "-".

Resultado que necesito:

$item[0]=''this is my - string''; $item[1]=''and more'';

y no:

$item[0]=''this is my''; $item[1]=''string - and more'';


Aquí hay otra forma de hacerlo:

$split_point = '' - ''; $string = ''this is my - string - and more''; $stringpos = strrpos($string, $split_point, -1); $finalstr = substr($string,0,$stringpos);


He tropezado con el mismo y lo he arreglado así:

$split_point = '' - ''; $string = ''this is my - string - and more''; $reverse_explode = array_reverse(explode($split_point, $string));


Me gustó la respuesta de Moff, pero la mejoré al limitar el número de elementos a 2 y revertir la matriz:

$split_point = '' - ''; $string = ''this is my - string - and more''; $result = array_reverse(array_map(''strrev'', explode($split_point, strrev($string),2)));

Entonces $ resultado será:

Array ( [0] => this is my - string [1] => and more )


Puede usar strrev para revertir la cadena y luego revertir los resultados:

$split_point = '' - ''; $string = ''this is my - string - and more''; $result = array_map(''strrev'', explode($split_point, strrev($string)));

Aunque no estoy seguro de si esta es la mejor solución.


Qué tal esto:

$parts = explode($split_point, $string); $last = array_pop($parts); $item = array(implode($split_point, $parts), $last);

No voy a ganar ningún premio de golf, pero creo que muestra la intención y funciona bien.


Si comprendo correctamente, ¿desea que el caso de ejemplo le brinde (''esto es mi cadena'', ''y más'')?

La división / explosión incorporada parece ser solo hacia adelante, probablemente tendrá que implementarlo usted mismo con strrpos. (búsqueda de derecha a izquierda)

$idx = strrpos($string, $split_point); $parts = array(substr($string, 0, $idx), substr($string, $idx+strlen($split_point)))


Suponiendo que solo desea que se ignore la primera aparición de $ split_point, esto debería funcionar para usted:

# retrieve first $split_point position $first = strpos($string, $split_point); # retrieve second $split_point positon $second = strpos($string, $split_point, $first+strlen($split_point)); # extract from the second $split_point onwards (with $split_point) $substr = substr($string, $second); # explode $substr, first element should be empty $array = explode($split_point, $substr); # set first element as beginning of string to the second $split_point $array[0] = substr_replace($string, '''', strpos($string, $substr));

Esto le permitirá dividirse en cada aparición de $ split_point después de (e incluir) la segunda aparición de $ split_point.


este es mi - cadena - y más

  1. Utilice la función de explosión común para obtener todas las cadenas
  2. Obtener sizeof array y obtener el último elemento
  3. Pop último elemento utilizando la función array_pop .
  4. Implode la cadena restante con el mismo delimitador (si lo desea, puede usar otro delimitador).

Código

$arrSpits=explode("", "this is my - string - and more"); $arrSize=count($arrSpits); echo "Last string".$arrSpits[arrSize-1];//Output: and more array_pop(arrSpits); //now pop the last element from array $firstString=implode("-", arrSpits); echo "First String".firstString; //Output: this is my - string


$split_point = '' - ''; $string = ''this is my - string - and more''; $result = end(explode($split_point, $string));

Esto esta funcionando bien