0

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

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

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

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

4

2 回答 2

1

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

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

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

于 2012-11-23T12:54:20.547 回答
0

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

于 2012-11-23T12:51:30.060 回答