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

また、追加する必要があります...選択の余地はありません。既存のスクリプトの一部であるため、この方法で追加する必要があります...URL内にURL用の個別の列を追加することはできません。 db。

4

2 に答える 2

1

urlencode関数をチェックしてください。簡単に言うと、スペースだけでなく、いくつかの文字をエンコードする必要があります。

-_を除くすべての英数字以外の文字を含む文字列を返します。パーセント(%)記号に置き換えられ、その後にプラス(+)記号としてエンコードされた2桁の16進数とスペースが続きます。これは、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 に答える