2010-11-21 13 views

Respuesta

16
$query = parse_url($url, PHP_URL_QUERY); 
parse_str($query, $vars); 
$guid2 = $vars['p']; 
3

Si 34 es el único número en la cadena de consulta, también puede utilizar

echo filter_var('http://www.test.com/?p=34', FILTER_SANITIZE_NUMBER_INT); // 34 

Esto se tira nada, no un número de la cadena URL. Sin embargo, esto fallará en el instante en que haya otros números en la URL. El solution offered by konforce es el enfoque más confiable si desea extraer el valor del parámetro p de la cadena de consulta.

1

A preg_replace() es probablemente la forma más rápida de obtener esa variable, el código siguiente funcionará si es siempre un número. Aunque konforce's solution es la forma general de obtener esa información de una URL, a pesar de que hace mucho trabajo para esa URL en particular, que es muy simple y se puede tratar simplemente si se actualiza.

$guid = 'http://www.test.com/?p=34'; 
$guid2 = preg_replace("/^.*[&?;]p=(\d+).*$/", "$1", $guid); 

actualización

Tenga en cuenta que si las URL no puede ser garantizado para tener la variable p=<number> en ellos, entonces usted tendría que usar partido en su lugar, como preg_replace() terminaría no a juego y devolviendo toda la cadena.

$guid = 'http://www.test.com/?p=34'; 
$matches = array(); 
if (preg_match("/^.*[&?;]p=(\d+).*$/", $guid, $matches)) { 
    $guid2 = $matches[1]; 
} else { 
    $guid2 = false; 
} 
+1

esto probablemente se debe incluir un cheque por ';' 'p 'antes de la para evitar' 12' NOTP = [&]. Si 'p' es el primer argumento, será'? P = ', si es otro, pero el primer parámetro será' & p = 'o, cuando los símbolos y símbolos estén codificados,' & p = '. – Gordon

+1

@Gordon Buen punto, un caso que no tomé en cuenta. Enmendaré mi respuesta. – Orbling

0

Eso es WordPress. En una sola página de publicación puede usar la función get_the_ID() (WP built-in, que se usa solo en el bucle).

0
$guid2 = $_GET['p'] 

Para más seguridad:

if(isset($_GET['p']) && $_GET['p'] != ''){ 
    $guid2 = $_GET['p']; 
} 
else{ 
    $guid2 = '1'; //Home page number 
} 
Cuestiones relacionadas