J'ai réussi à remplacer les caractères spéciaux tels que:;/etc dans mon URL mais maintenant il a de nouveau les espaces. Voici mon code:
<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>
Je veux qu'il aime supprimer les caractères spéciaux et remplacer les espaces par des tirets.
Essayez str_replace(' ', '-', $string);
Vous pouvez utiliser preg_replace:
preg_replace('/[[:space:]]+/', '-', $subject);
Cela remplacera toutes les instances d'espace par un seul tiret "-". Donc, si vous avez un espace double, triple, etc., il vous donnera toujours un tiret.
EDIT: c'est une fonction générique que j'ai utilisée au cours de la dernière année pour ranger mes URL
function formatUrl($str, $sep='-')
{
$res = strtolower($str);
$res = preg_replace('/[^[:alnum:]]/', ' ', $res);
$res = preg_replace('/[[:space:]]+/', $sep, $res);
return trim($res, $sep);
}
Il convertira tous les caractères non alphanumériques en espace, puis convertira tout l'espace en tiret, puis coupera tous les tirets à la fin/au début de la chaîne. Cela fonctionnera mieux que d'avoir à lister des caractères spéciaux dans votre str_replace