我有这个字符串:
$guid = 'http://www.test.com/?p=34';
如何从字符串中提取get var p
(34)的值并拥有$guid2 = '34'
?
答案 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
}