【问题标题】:Need to remove space to create URL?需要删除空间来创建 URL?
【发布时间】:2012-11-23 12:49:48
【问题描述】:

我有一个查询要提取一堆城市名称。我需要将它们中的每一个都链接起来......链接看起来像这样: www.sitename.com/city-new-york

问题是,如果我将名称设置为名称的链接...某些城市(例如“纽约”)中有一个空格...然后 URL 就无法正常工作。 我怎样才能使它名称中的空格将被替换为“-”,以便它将显示为“city-new-york”,现在我有这个代码,但它将它链接为 “纽约市”

<?php foreach ($cities as $city):?>
<li>
<a href="city-<?php echo $city['name']; ?>">
<?php echo $city['name']; ?>
</li>
<?php endforeach;?>

另外,我只需要添加...我别无选择,我必须这样做,因为它是现有脚本的一部分...我不能只为数据库中的 URL。

【问题讨论】:

标签: php url hyperlink


【解决方案1】:

查看urlencode 函数。简而言之,您需要对多个字符进行编码,而不仅仅是空格。

返回一个字符串,其中包含除 -_ 之外的所有非字母数字字符。 已替换为百分号 (%) 符号后跟两个十六进制数字 和编码为加号 (+) 的空格。它的编码方式与 来自 WWW 表单的发布数据被编码,这与在 application/x-www-form-urlencoded 媒体类型

请注意,您的服务器会自动解码参数。上面对 HTTP 请求进行了编码。

【讨论】:

    【解决方案2】:

    str_replace 函数允许您替换字符串中的字符,strtolower 将使整个字符串变为小写:

    <?php foreach ($cities as $city):?>
    <li>
    <a href="city-<?php echo strtolower( str_replace(' ', '-', $city['name']) ); ?>">
    <?php echo $city['name']; ?>
    </li>
    <?php endforeach;?>
    

    http://php.net/manual/en/function.str-replace.php

    http://php.net/manual/en/function.strtolower.php

    【讨论】:

    • 你真是太棒了!正是我所需要的,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-11
    • 2021-08-03
    • 2014-09-10
    相关资源
    最近更新 更多