Suuuuuck en regex y ni siquiera puedo comenzar a averiguar cómo eliminar todo desde #edit hasta el final que contiene un verificable de la URL de este tipo de URL:

https://docs.google.com/presentation/d/1aa_xpsyJtslFJsg4UndsjDvlCe7Vu97_i6Q8zSKofy4/edit?usp=sharing

Cualquier ayuda sería muy apreciada!

¡Gracias!

-2
BarryWalsh 20 feb. 2018 a las 18:04

2 respuestas

La mejor respuesta

El uso de strstr() con el tercer parámetro establecido en true será el enfoque sin expresiones regulares más limpio y directo. ... y no tendrás que sudar tus habilidades de expresión regular "suuuuucky";) Esto aislará la subcadena desde el inicio de la cadena hasta el personaje antes de la subcadena de búsqueda.

Código: (Demo)

$url = 'https://docs.google.com/presentation/d/1aa_xpsyJtslFJsg4UndsjDvlCe7Vu97_i6Q8zSKofy4/edit?usp=sharing';

echo strstr($url, '/edit', true);  // https://docs.google.com/presentation/d/1aa_xpsyJtslFJsg4UndsjDvlCe7Vu97_i6Q8zSKofy4
echo "\n";
echo strstr($url, '/edit?', true);  // https://docs.google.com/presentation/d/1aa_xpsyJtslFJsg4UndsjDvlCe7Vu97_i6Q8zSKofy4

* nota: Si la cadena de consulta (que comienza con ?) siempre existirá después de /edit, agregar ? a la subcadena de búsqueda solo puede mejorar la precisión.

¿Por qué es esta la mejor función para llamar? No aprovecha la sobrecarga de llamar al motor de expresiones regulares, no genera matrices temporales y es una llamada de función única en contraposición a substr() - strrpos().

Si sus casos de uso son un poco más complejos y este enfoque lo está decepcionando, llamar a parse_url() debería estabilizar las cosas lo suficiente como para permitirle extraer los componentes de URL adecuados.

Código: (Demo)

$url = 'https://docs.google.com/presentation/d/1aa_xpsyJtslFJsg4UndsjDvlCe7Vu97_i6Q8zSKofy4/edit?usp=sharing';
$components = parse_url($url);
echo $components['scheme'], '://', $components['host'], strstr($components['path'],'/edit',true);
0
mickmackusa 6 mar. 2018 a las 03:50

Creo que está intentando analizar los parámetros de consulta al final de la url. Puede hacerlo utilizando la función explotar:

$url = "https://docs.google.com/presentation/d/1aa_xpsyJtslFJsg4UndsjDvlCe7Vu97_i6Q8zSKofy4/edit?usp=sharing";
print(explode('/edit', $url)[1]);

Que imprimirá

?usp=sharing 
0
Andrew A. 20 feb. 2018 a las 15:15