我想从URL字符串返回页面ID。
例如,如果我有这个:
<?php
$string = "foobar.com/?page_id=20"; // <-dynamically generated
$new_string = some_function($string, get stuff after 'page_id='); // (need to know what function to use and how)
// I want to get this:
echo $new_string; //($new_string = "20";)
?>
///更新!
如果我当前在该页面或其中一个孩子上,我正在尝试向链接添加一个类。这是我得到的:
<?php
$items = wp_get_nav_menu_items("navigation");
$counter = 1;
foreach($items as $item): ?>
<a id="mainnav<?php echo $counter; ?>" class="
<?php
//home
$theurl = $item->url;
$new_string = modify_withfunction("after page_id=", $theurl);
if ($new_string == $page->post_parent || $new_string == $page->ID) {
echo 'currentnav';
}
?>
" href="<?php echo $item->url; ?>"><?php echo $item->title; ?></a>
<?php
$counter++;
endforeach;
?>
答案 0 :(得分:1)
未经测试,但此代码应该执行:
function get_pageid($str){
preg_match("/page_id=(\d+)?/", $str, $matches);
return $matches[0];
}
但是,那只能用于你想要提取的ID是一系列数字。如果格式不同,您需要修改正则表达式以匹配格式。
答案 1 :(得分:1)
您有两种选择。从字符串中提取内容通常是正则表达式的任务。当你意识到你可以注意到一个固定的字符串部分,以及你想要的一个占位符({{1>} d ecimals)时,它们很简单:
\d+
或者,如果它是一个URL字符串,那么这也是可能的:
preg_match('/page_id=(\d+)/', $str, $match);
print $match[1];
答案 2 :(得分:1)
如果您不想使用正则表达式。
你可以看一下:
以下是一些示例代码:
<?php
parse_str(parse_url('foobar.com/?page_id=20', PHP_URL_QUERY));
var_dump($page_id);
答案 3 :(得分:0)
因为你已经在你的问题中添加了wordpress标签。
wordpress提供$wp_query
对象,该对象具有名为query_vars
if(isset($wp_query->query_vars['page_id'])) {
$page_id = urldecode($wp_query->query_vars['page_id']);
}