php
  • string
  • wordpress
  • url
  • 2011-03-22 90 views 1 likes 
    1

    我想從URL字符串中返回頁面標識。如何在字符串匹配後返回部分PHP字符串?

    例如,如果我有這樣的:

    <?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

    是不是可以只使用$ _GET超全局? – helloandre 2011-03-22 00:28:09

    +0

    是的,但我沒有測試當前頁面。我正在測試返回的網址。 – Dave 2011-03-22 00:29:03

    回答

    1

    你有兩種選擇。從字符串中提取某些內容通常是正則表達式的一項任務。他們是當你意識到你可以注意一個固定的字符串的一部分容易,併爲你想要的(\d+d這裏ecimals)什麼樣的佔位符之一:

    preg_match('/page_id=(\d+)/', $str, $match); 
    print $match[1]; 
    

    或者,如果它是一個URL字符串,那麼這也有可能:

    parse_str(substr(strrchr($str, "?"), 1), $params); 
    print $params["page_id"]; 
    
    1

    未經檢驗的,但是這個代碼應該做的:

    function get_pageid($str){ 
        preg_match("/page_id=(\d+)?/", $str, $matches); 
        return $matches[0]; 
    } 
    

    但是,這樣做既要拉動ID的工作是一系列的數字。如果不同,您需要修改正則表達式以匹配格式。

    +0

    但我輸入一個字符串,而不是一個數組? – Dave 2011-03-22 00:54:45

    0

    因爲您已經在您的問題中添加了wordpress標籤。

    的WordPress提供$wp_query對象和對象有一個名爲query_vars

    if(isset($wp_query->query_vars['page_id'])) { 
        $page_id = urldecode($wp_query->query_vars['page_id']); 
    } 
    
    1

    如果你不希望使用正則表達式屬性。

    你可以看一下:

    下面是一些示例代碼:

    <?php 
    parse_str(parse_url('foobar.com/?page_id=20', PHP_URL_QUERY)); 
    var_dump($page_id); 
    
    相關問題