Spaties vervangen door een streepje in een URL

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

Other episodes