Php 从变量中提取数字
我有这个字符串:Php 从变量中提取数字,php,Php,我有这个字符串: $guid = 'http://www.test.com/?p=34'; 如何从字符串中提取get varp(34)的值,并使$guid2='34'?如果34是查询字符串中唯一的数字,您也可以使用 $query = parse_url($url, PHP_URL_QUERY); parse_str($query, $vars); $guid2 = $vars['p']; echo filter_var('http://www.test.com/?p=34', FILTER_
$guid = 'http://www.test.com/?p=34';
如何从字符串中提取get var
p
(34)的值,并使$guid2='34'
?如果34是查询字符串中唯一的数字,您也可以使用
$query = parse_url($url, PHP_URL_QUERY);
parse_str($query, $vars);
$guid2 = $vars['p'];
echo filter_var('http://www.test.com/?p=34', FILTER_SANITIZE_NUMBER_INT); // 34
这将从URL字符串中删除任何不是数字的内容。但是,当URL中有其他数字时,此操作将失败。如果要提取查询字符串的p参数的值,则最可靠的方法是A。A可能是获取该变量的最快方法,如果它始终是一个数字,下面的代码将起作用。虽然这是从URL获取信息的一般方法,但它对特定的URL做了大量工作,这非常简单,如果不改变的话,可以简单地处理
$guid = 'http://www.test.com/?p=34';
$guid2 = preg_replace("/^.*[&?;]p=(\d+).*$/", "$1", $guid);
更新
请注意,如果无法保证URL中包含变量p=
,则需要使用match,因为preg_replace()最终将不匹配并返回整个字符串
$guid = 'http://www.test.com/?p=34';
$matches = array();
if (preg_match("/^.*[&?;]p=(\d+).*$/", $guid, $matches)) {
$guid2 = $matches[1];
} else {
$guid2 = false;
}
那是WordPress。在单个post页面上,您可以使用get_the_ID()函数(内置WP,仅在循环中使用) 为了更安全:
if(isset($_GET['p']) && $_GET['p'] != ''){
$guid2 = $_GET['p'];
}
else{
$guid2 = '1'; //Home page number
}
这可能包括在
p
之前检查[?&;]
,以防止notp=12
。如果p
是第一个参数,则它将是?p=
,如果它不是第一个参数,则它将是&p=
,或者,当对符号进行编码时,&;p=
@Gordon很好,我忽略了这个案例。我要修改我的答案。
if(isset($_GET['p']) && $_GET['p'] != ''){
$guid2 = $_GET['p'];
}
else{
$guid2 = '1'; //Home page number
}