【问题标题】:Capture value from URL string with php使用 php 从 URL 字符串中捕获值
【发布时间】:2012-01-12 11:56:36
【问题描述】:

我需要从一个字符串中提取一个变量的值,这个字符串恰好是一个 URL。字符串/url 作为单独的 php 查询的一部分加载,而不是浏览器中的 url。

网址看起来像:

index.php?option=com_content&view=article&catid=334:golfeq&id=2773:xcelsiors&Itemid=44

我怎样才能始终找到并捕获在此示例中为 2773 的 id 的值?

我已经阅读了几个示例,但我尝试的是捕获正在浏览器中查看的当前页面的 id 值,而不是 URL 字符串。

谢谢

【问题讨论】:

  • id的值不是“2773”而是“2773:xcelsiors”。

标签: php url parameters capture


【解决方案1】:

您正在寻找组合或parse_url(它将为您隔离查询字符串)和parse_str(它将解析变量并将它们放入数组中)。

例如:

$url = 'index.php?option=com_content&view=article&catid=334:golfeq&id=2773:xcelsiors&Itemid=44';

// This parses the url for the query string, and parses the vars from that
// into the array $vars (which is created on the spot).
parse_str(parse_url($url, PHP_URL_QUERY), $vars);

print_r($vars); // see what's in there

// Parse the value "2773:xcelsiors" to isolate the number
$id = reset(explode(':', $vars['id']));

// This will also work:
$id = intval($vars['id']);

echo "The id is $id\n";

See it in action.

【讨论】:

  • 感谢您的回复。我想我看到了为什么这对我不起作用的症状。当我执行 print_r($vars) 时,而不是得到例如 [catid] => 334:golfeq 它显示 [amp;catid] => 334 所以我认为处理“&”有一些问题。知道如何解决这个问题吗?
【解决方案2】:

您可以使用parse_str

【讨论】:

  • 字符串不是站点的 URL,因此值不会在 $_GET 数组中。
【解决方案3】:

您可以使用 parse_url 来解析 URL!

但你可以使用,直接提取ID变量的数字:

$url = 'index.php?option=com_content&view=article&catid=334:golfeq&id=2773:xcelsiors&Itemid=44';
$id = preg_replace("/^.*[&?]id=([0-9]+).*$/",'$1',$url);
echo $id;

【讨论】:

    猜你喜欢
    • 2012-10-06
    • 1970-01-01
    • 1970-01-01
    • 2016-08-31
    • 1970-01-01
    • 2021-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多