query method array _get php query-string

php - method - ¿Cómo eliminar la cadena de consulta y obtener solo la url?



php parameters string (12)

Debido a que trato con URLs absolutas y relativas, actualicé la solución de Veritas como el código a continuación.
Puedes probarlo aquí: https://ideone.com/PvpZ4J

function removeQueryStringFromUrl($url) { if (substr($url,0,4) == "http") { $urlPartsArray = parse_url($url); $outputUrl = $urlPartsArray[''scheme''] . ''://'' . $urlPartsArray[''host''] . ( isset($urlPartsArray[''path'']) ? $urlPartsArray[''path''] : '''' ); } else { $URLexploded = explode("?", $url, 2); $outputUrl = $URLexploded[0]; } return $outputUrl; }

Estoy usando PHP para construir la URL de la página actual. A veces, las URL en forma de

www.mydomian.com/myurl.html?unwantedthngs

son solicitados. Quiero eliminar el ? y todo lo que le sigue (querystring), de modo que la URL resultante se convierta en:

www.mydomain.com/myurl.html

Mi código actual es este:

<?php function curPageURL() { $pageURL = ''http''; if ($_SERVER["HTTPS"] == "on") { $pageURL .= "s"; } $pageURL .= "://"; if ($_SERVER["SERVER_PORT"] != "80") { $pageURL .= $_SERVER["SERVER_NAME"] . ":" . $_SERVER["SERVER_PORT"] . $_SERVER["REQUEST_URI"]; } else { $pageURL .= $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"]; } return $pageURL; } ?>



Para eliminar la cadena de consulta del URI de solicitud, reemplace la cadena de consulta con una cadena vacía:

function request_uri_without_query() { $result = $_SERVER[''REQUEST_URI'']; $query = $_SERVER[''QUERY_STRING'']; if(!empty($query)) { $result = str_replace(''?'' . $query, '''', $result); } return $result; }


Prueba esto

$url_with_querystring = ''www.mydomian.com/myurl.html?unwantedthngs''; $url_data = parse_url($url_with_querystring); $url_without_querystring = str_replace(''?''.$url_data[''query''], '''', $url_with_querystring);


Prueba esto:

$urrl=$_SERVER[''HTTP_HOST''] . $_SERVER[''SCRIPT_NAME'']

o

$urrl=$_SERVER[''HTTP_HOST''] . $_SERVER[''PHP_SELF'']


Puede usar strtok para obtener una cadena antes de la primera aparición de ?

$url=strtok($_SERVER["REQUEST_URI"],''?'');


Puedes probar:

<?php $this_page = basename($_SERVER[''REQUEST_URI'']); if (strpos($this_page, "?") !== false) $this_page = reset(explode("?", $this_page)); ?>


Si desea obtener la ruta de solicitud ( más información ):

echo parse_url($_SERVER["REQUEST_URI"])[''path'']

Si desea eliminar la consulta y (y tal vez también fragmentar):

function strposa($haystack, $needles=array(), $offset=0) { $chr = array(); foreach($needles as $needle) { $res = strpos($haystack, $needle, $offset); if ($res !== false) $chr[$needle] = $res; } if(empty($chr)) return false; return min($chr); } $i = strposa($_SERVER["REQUEST_URI"], [''#'', ''?'']); echo strrpos($_SERVER["REQUEST_URI"], 0, $i);


Use PHP Manual - parse_url () para obtener las piezas que necesita.

Editar (uso de ejemplo para @Navi Gamage)

Puedes usarlo así:

<?php function reconstruct_url($url){ $url_parts = parse_url($url); $constructed_url = $url_parts[''scheme''] . ''://'' . $url_parts[''host''] . $url_parts[''path'']; return $constructed_url; } ?>

Editar (segundo ejemplo completo):

Función actualizada para asegurarse de que se adjuntará el esquema y que no aparezcan mensajes de aviso:

function reconstruct_url($url){ $url_parts = parse_url($url); $constructed_url = $url_parts[''scheme''] . ''://'' . $url_parts[''host''] . (isset($url_parts[''path''])?$url_parts[''path'']:''''); return $constructed_url; } $test = array( ''http://www.mydomian.com/myurl.html?unwan=abc'', ''http://www.mydomian.com/myurl.html'', ''http://www.mydomian.com'', ''https://mydomian.com/myurl.html?unwan=abc&ab=1'' ); foreach($test as $url){ print_r(parse_url($url)); }

Regresará:

Array ( [scheme] => http [host] => www.mydomian.com [path] => /myurl.html [query] => unwan=abc ) Array ( [scheme] => http [host] => www.mydomian.com [path] => /myurl.html ) Array ( [scheme] => http [host] => www.mydomian.com ) Array ( [path] => mydomian.com/myurl.html [query] => unwan=abc&ab=1 )

Este es el resultado de pasar urls de ejemplo a través de parse_url () sin segundo parámetro (solo para explicación).

Y este es el resultado final después de construir url usando:

foreach($test as $url){ echo reconstruct_url($url) . ''<br/>''; }

Salida:

http://www.mydomian.com/myurl.html http://www.mydomian.com/myurl.html http://www.mydomian.com https://mydomian.com/myurl.html


mejor solución:

echo parse_url($_SERVER[''REQUEST_URI''], PHP_URL_PATH);

No es necesario que incluya su http://dominio.com si envía un formulario al mismo dominio.


La forma más fácil

$url = ''https://www.youtube.com/embed/ROipDjNYK4k?rel=0&autoplay=1''; $url_arr = parse_url($url); $query = $url_arr[''query'']; print $url = str_replace(array($query,''?''), '''', $url); //output https://www.youtube.com/embed/ROipDjNYK4k


$val = substr( $url, 0, strrpos( $url, "?"));