Ik heb speciale tekens zoals : ; / etc in mijn URL, maar nu heeft het weer de spaties. Hier is mijn 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>
Ik wil dat het leuk vindt dat het speciale tekens verwijdert en spaties vervangt door streepjes.
Antwoord 1, autoriteit 100%
Probeer str_replace(' ', '-', $string);
Antwoord 2, autoriteit 53%
U kunt preg_replace gebruiken:
preg_replace('/[[:space:]]+/', '-', $subject);
Hierdoor worden alle gevallen van spatie vervangen door een enkel ‘-‘-streepje. Dus als je een dubbele, driedubbele, etc spatie hebt, dan krijg je nog steeds een streepje.
EDIT: dit is een algemene functie die ik het afgelopen jaar heb gebruikt om mijn URL’s netjes te maken
function formatUrl($str, $sep='-')
{
$res = strtolower($str);
$res = preg_replace('/[^[:alnum:]]/', ' ', $res);
$res = preg_replace('/[[:space:]]+/', $sep, $res);
return trim($res, $sep);
}
Het converteert alle niet-alfanumerieke tekens naar een spatie, converteert vervolgens alle spatie naar een streepje en trimt vervolgens eventuele streepjes aan het einde/begin van de tekenreeks. Dit werkt beter dan speciale tekens in je str_replace te moeten vermelden