Pregunta

¿hay alguna manera de cortar una cadena Digamos que tengo esta variable

$output=Country=UNITED STATES (US) &City=Scottsdale, AZ &Latitude=33.686 &Longitude=-111.87

quiero cortarlo en una forma que yo quiero para tirar de los valores de latitud y longitud en las variables separadas, subtok no está cumpliendo el propósito

¿Fue útil?

Solución

No es necesario una expresión regular para esto; explode() utilizar para dividir la cadena, por primera vez por &, y luego por =, que se puede utilizar para analizar de manera efectiva en un bonito nombres poco mapeo gama de valores.

Otros consejos

$output='Country=UNITED STATES (US) &City=Scottsdale, AZ &Latitude=33.686 &Longitude=-111.87';
parse_str($output, $array);
$latitude = $array['latitude'];

También puede simplemente hacer

parse_str($output);
echo $latitude;

Creo utilizando una matriz es mejor, ya que no está creando las variables por todo el lugar, lo que podría ser peligroso (como register_globals) si usted no confía en la cadena de entrada.

Parece gustos que viene de una dirección URL, aunque la codificación URL se ha ido.

I segundo las sugerencias de la utilización de explode() o preg_split() pero también puede estar interesado en parse_str() .

$output = "City=Scottsdale, AZ &Latitude=33.686 &Longitude=-111.87";
parse_str($output, $results);
$lat = $results['Latitude'];
$lon = $results['Longitude'];

No estoy seguro exactamente lo que está demostrando en su código, tal vez sea sólo algunos errores tipográficos, es el "$ de salida", el nombre de la variable, o una parte de la cadena?

Si se asume que es el nombre de la variable, y sólo se olvidó de poner las comillas en la cadena, que tiene un par de opciones:


$sliced = explode('&', $output)

Esto creará una matriz con valores:. "País = ESTADOS UNIDOS (US)", "Ciudad = Scottsdale, AZ", etc.


$sliced = preg_split('/[&=]/', $output);

Esto creará una matriz con elementos que son las "variables" y sus valores: la alternancia. "País", "ESTADOS UNIDOS (US)", "City", "Scottsdale, AZ", etc.

Se puede hacer lo siguiente:

$output = 'Country=UNITED STATES (US) &City=Scottsdale, AZ &Latitude=33.686 &Longitude=-111.87';

$strs = explode('&', $output);
foreach ($strs as $str) {

   list($var, $val) = explode('=',$str);
   $$var = trim($val);

}

Esto le daría variables como $ Latitud y Longitud $ que se establece en el valor del par clave / valor.

Todas las otras respuestas son insuficientes. Esto debería funcionar cada vez!

function slice($string, $start){
  $st = $string; $s = $start; $l = strlen($st); $a = func_get_args();
  $e = isset($a[2]) ? $a[2] : $l;
  $f = $e-$s;
  $p = $e < 0 && $s > 0 ? $l+$f : $f;
  return substr($st, $s, $p);
}

Le sugiero que lea acerca de las expresiones regulares en la ayuda de PHP.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top