Înlocuiți spațiile cu o liniuță într-un URL (Programare, Php, Rescriere Url)

Robdogga55 a intrebat.

Am reușit să înlocuiesc caracterele speciale, cum ar fi : ; / etc. în URL-ul meu, dar acum are din nou spațiile. Iată codul meu:

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

Vreau ca așa cum este să elimine caracterele speciale precum și să înlocuiască spațiile cu liniuțe.

Comentarii

  • Este destul de evident că acum ai spații din moment ce tu însuți le-ai pus acolo cu: str_replace(array(':', '\', '/', '*'), ' ', urldecode($row_getDisplay['title']));. Înlocuiți-l cu „nimic”, de exemplu: str_replace('yourChar', '', 'yourString');. După aceea puteți înlocui spațiile rămase cu liniuțe. –  > Por Jules.
2 răspunsuri
ka_lin

Încearcă str_replace(' ', '-', $string);

Comentarii

  • cea mai simplă soluție, puteți adăuga o matrice de caractere invalide ca str_replace(array(” „, „;”), array(„-„, „_”), $str) – user1646111
  • Sunt cel mai rău pentru că am trecut cu vederea orice soluție preg_replace când există opțiuni mai drepte și mai simple? Cum ar fi a ta? Îmi scapă ceva? –  > Por LizardKG.
Christopher Brunsdon

Puteți folosi preg_replace:

preg_replace('/[[:space:]]+/', '-', $subject);

Aceasta va înlocui toate cazurile de spațiu cu o singură liniuță ‘-‘. Deci, dacă aveți un spațiu dublu, triplu, etc., atunci vă va da în continuare o singură liniuță.

EDIT: aceasta este o funcție generec pe care am folosit-o în ultimul an pentru a-mi face URL-urile ordonate

    function formatUrl($str, $sep='-')
    {
            $res = strtolower($str);
            $res = preg_replace('/[^[:alnum:]]/', ' ', $res);
            $res = preg_replace('/[[:space:]]+/', $sep, $res);
            return trim($res, $sep);
    }

Aceasta va converti toate caracterele non-alfanumerice în spațiu, apoi va converti toate spațiile în liniuță, apoi va tăia orice liniuță de la sfârșitul / începutul șirului. Acest lucru va funcționa mai bine decât să trebuiască să enumerați caracterele speciale în str_replace

Comentarii

  • Mulțumesc, voi încerca asta într-un minut, cum aș putea include funcția generec în codul meu, –  > Por Robdogga55.
  • Puneți-o într-un fișier (de exemplu, „helpers.php”) și includeți-o în codul dvs. la începutul fișierului cu <?php require_once(‘helpers.php’); ?> înainte de a apela funcția. În acest fel, o puteți reutiliza în mai multe fișiere fără a fi nevoie să tastați sau să declarați funcția în fiecare fișier. –  > Por Christopher Brunsdon.
  • Deci, trebuie doar să o puneți într-un fișier „helpers.php”, să includeți pagina în cod și gata? –  > Por Robdogga55.