【问题标题】:How can I make this work? http_build_query example我怎样才能使这项工作? http_build_query 示例
【发布时间】:2012-09-10 14:32:08
【问题描述】:

如何为我的网页添加以下http_build_query 脚本?

$params = array(
    'p'    => 'foo',
    'lang' => 'bar'
);

echo http_build_query($params); // p=foo&lang=bar

echo '?' . http_build_query($params); // ?p=foo&lang=bar

PHP url strings conflict "?" and "&"相关

这是我的页面的工作方式:

<a href="?lang=es">Español</a>
<a href="?lang=en">English</a>

<?php
    $p = $_GET['p'];
    $pages = array('g1', 'g2', 'g3');
    if (!empty($p)) {
        if(in_array($p,$pages)) {
            $p .= '.php';
            include($p);
        }
    }
    else {
        echo '<a href="?p=g1">Page 1</a> <a href="?p=g2">Page 2</a></li> <a href="?p=g3">Page 3</a>';
    }
?>

【问题讨论】:

  • 还有什么问题?您想用 http_build_query 函数替换每个 statis href=".." 吗?

标签: php string url lang


【解决方案1】:

您可以编写一个函数来将查询参数与当前$_GET 数组合并。

<?php
function merge_queries(array $original, array $updates) {
    $params = array_merge($original, $updates);
    return '?'.http_build_query($params);
}
?>

<a href="<?php echo merge_queries($_GET, array('lang'=>'es')); ?>">Español</a>
<a href="<?php echo merge_queries($_GET, array('lang'=>'en')); ?>">English</a>

<?php
// code abbreviated for clarity
echo '<a href="'.merge_queries($_GET, array('p'=>'g1')).'">Page 1</a>
      <a href="'.merge_queries($_GET, array('p'=>'g2')).'">Page 2</a>
      <a href="'.merge_queries($_GET, array('p'=>'g3')).'">Page 3</a>';
?>

【讨论】:

    【解决方案2】:

    你可以很容易地做到这一点:

    $urlpath = implode('&', $params);
    $url = $yourhost . '?' . $urlpart;
    

    【讨论】:

    • 我应该如何以及在哪里包含它?我对这个 php 有点陌生。
    猜你喜欢
    • 1970-01-01
    • 2012-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-04
    • 1970-01-01
    • 2018-01-21
    • 2023-03-23
    相关资源
    最近更新 更多