从变量中提取数字

时间:2010-11-21 12:56:07

标签: php

我有这个字符串:

$guid = 'http://www.test.com/?p=34';

如何从字符串中提取get var p(34)的值并拥有$guid2 = '34'

5 个答案:

答案 0 :(得分:16)

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

答案 1 :(得分:3)

如果34是查询字符串中的唯一数字,您也可以使用

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

这将从URL字符串中删除任何不是数字的内容。但是,如果URL中有其他数字,这将失败。如果要提取查询字符串的p参数值,solution offered by konforce是最可靠的方法。

答案 2 :(得分:1)

preg_replace()可能是获取该变量的最快方法,如果它始终是一个数字,下面的代码将起作用。虽然konforce's solution是从URL获取该信息的一般方法,但它为该特定URL做了大量工作,这非常简单,只要它不变,就可以处理。

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

<强>更新

请注意,如果无法保证URL中包含变量p=<number>,则需要使用匹配,因为preg_replace()最终不匹配并返回整个字符串。

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

答案 3 :(得分:0)

那是WordPress。在单个帖子页面上,您可以使用get_the_ID()函数(内置WP,仅在循环中使用)。

答案 4 :(得分:0)

$guid2 = $_GET['p']

为了更安全:

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