Tengo el siguiente código que me da exactamente lo que primero necesitaba (palabras en mayúscula después del primer = en la cadena $data:

if (($pos = strpos($data, "=")) !== FALSE) { 
    $whatIWant = ucwords(substr($data, $pos+1)); 
}

Lo que ahora necesito hacer es exactamente lo mismo, pero ignore cualquier cosa después (e incluyendo) el primer & en la misma cadena ($data).

Mi PHP es débil, ¿alguien puede decirme cómo actualizar lo anterior para hacer esto? No he podido encontrar la respuesta aquí, pero si me la he perdido, dígame.

Cadenas de muestra:

destination = Apartamento + TITLIS + Resort + Wohnung + 721 & hotelid = 0123454656

destino = Alquiler + Apartamento + Mendi + Eder + - + Saint-Jean & hotelid = 01234

destino = tres dormitorios + vacaciones + hogar + en + Olofstrom Hotel Id = 98

php
0
Lyall 18 oct. 2017 a las 22:14

3 respuestas

La mejor respuesta

Si esta cadena de consulta proviene de la URL que se utiliza para acceder a la página (como parece por su comentario que está utilizando $_SERVER['QUERY_STRING']), simplemente use $_GET Superglobal:

echo ucwords($_GET['destination']);

Si la cadena de consulta proviene de otro lugar, entonces hay una herramienta para eso, parse_str:

parse_str($data, $result);

Su primer ejemplo de cadena de consulta produce:

Array
(
    [destination] => Apartment TITLIS Resort Wohnung 721
    [hotelid] => 0123454656
)

Entonces solo:

echo ucwords($result['destination']);
4
AbraCadaver 18 oct. 2017 a las 19:38

Usar el $_GET superglobal es la forma correcta de obtener un parámetro GET en PHP.

$_GET['destination']

Tendrá su destination, y ya estará decodificado en URL.

Las variables GET se pasan a través de urldecode ().

1
chris85 18 oct. 2017 a las 19:31

Su solución aquí: puede verificar aquí: https://3v4l.org/ohgvE

<?php 
$data = "destination=Apartment+TITLIS+Resort+Wohnung+721&hotelid=0123454656";
if (($pos = strpos($data, "=")) !== FALSE) { 
    $whatIWant = ucwords(substr($data, $pos+1)); 
    $whatIWant = explode("&", $whatIWant); // creating array from string
    $whatIWant = $whatIWant[0]; // before & is first array element
    echo "Ans1: \n";
    echo $whatIWant;
    // Output: Apartment+TITLIS+Resort+Wohnung+721
    // if you want your output with & just add & 
    echo "\n\nAns2: \n";

    $whatIWant = $whatIWant."&";

    echo $whatIWant;
    // now Output iss: 
    // Apartment+TITLIS+Resort+Wohnung+721&
}

?>
2
Himel Rana 18 oct. 2017 a las 19:44