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

    URL 문자열에서 페이지 ID를 반환하고 싶습니다. 예를 들어문자열 일치 후 부분 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";) 
    ?> 
    

    /// UPDATE를!

    링크에 클래스를 추가하려고하고 있는데, 현재 해당 페이지 나 해당 자식 중 하나에있는 경우입니다. 당신이 끌어하고자하는 ID의 것이라고 만 작업을하는 일련의 숫자입니다

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

    그러나 :

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

    +0

    예, 현재 페이지는 테스트하지 않았습니다. 반환 된 URL에서 테스트하고 있습니다. – Dave

    답변

    1

    두 가지 옵션이 있습니다. 문자열에서 무언가를 추출하는 것은 대개 정규 표현식의 작업입니다. 그들은 당신이 방금 고정 문자열 부분을주의 할 수 실현 때 쉽게, 당신은 (여기 \d+에 대한 D ecimals) 원하는 것을위한 자리 중 하나를

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

    또는 그것을 다음이 URL 문자열, 만약 또한 귀하의 질문에 wordpress 태그를 추가 했으므로

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

    안된하지만,이 코드는 수행해야합니다 여기에 내가 가진 것입니다. 형식이 다른 경우 일치하도록 정규 표현식을 수정해야합니다.

    +0

    하지만 문자열이 아닌 배열을 입력하고 있습니까? – Dave

    0

    이 가능합니다.

    워드 프레스는 $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); 
    
    관련 문제