次のような特殊文字をなんとか置き換えました。 /など私のURLに今は再びスペースがあります。これが私のコードです:
<h3><a href="<?php echo (isset($row_getDisplay['post_id']) ? $row_getDisplay['post_id'] : ''); ?>_<?php echo str_replace(array(':', '\\', '/', '*'), ' ', urldecode($row_getDisplay['title'])); ?>.html" ><?php echo (isset($row_getDisplay['title']) ? $row_getDisplay['title'] : ''); ?></a></h3>
特殊文字を削除したり、スペースをダッシュに置き換えたりするのが好きです。
str_replace(' ', '-', $string);
をお試しください
Preg_replaceを使用できます。
preg_replace('/[[:space:]]+/', '-', $subject);
これにより、スペースのすべてのインスタンスが単一の「-」ダッシュに置き換えられます。したがって、ダブル、トリプルなどのスペースがある場合でも、ダッシュは1つになります。
編集:これは私のURLを整理するために昨年使用したgenerec関数です
function formatUrl($str, $sep='-')
{
$res = strtolower($str);
$res = preg_replace('/[^[:alnum:]]/', ' ', $res);
$res = preg_replace('/[[:space:]]+/', $sep, $res);
return trim($res, $sep);
}
英数字以外のすべての文字をスペースに変換してから、すべてのスペースをダッシュに変換し、文字列の末尾/先頭にあるダッシュを削除します。これは、str_replaceに特殊文字をリストする必要があるよりもうまく機能します