2010-07-22 8 views

Répondre

28
$string = preg_replace('/-{2,}/','-',$string); 
+0

+1 pour l'utilisation des accolades. –

+1

Est-ce que les performances des accolades sont significativement meilleures que "- +"? – Wrikken

+0

Merci Mark! :-D Est-il aussi facile d'enlever un tiret, si la chaîne commence par un? Par exemple, avoir "--hello --- world" s'avère être "hello-world"? – kasperwf

0

essayer $string = preg_replace('/-+/', '-', $string)

0
$string = preg_replace('/--+/', '-', $string); 
0

est ici la fonction que je utilise - fonctionne comme un charme :)

public static function setString($phrase, $length = null) { 
    $result = strtolower($phrase); 
    $result = trim(preg_replace("/[^0-9a-zA-Z-]/", "-", $result)); 
    $result = preg_replace("/--+/", "-", $result); 
    $result = !empty($length) ? substr($result, 0, $length) : $result; 
    // remove hyphen from the beginning (if exists) 
    $first_char = substr($result, 0, 1); 
    $result = $first_char == "-" ? substr($result, 1) : $result; 
    // remove hyphen from the end (if exists) 
    $last_char = substr($result, -1); 
    $result = $last_char == "-" ? substr($result, 0, -1) : $result;  
    return $result; 
} 
2

Pour les supprimer dès le début et la fin:

$string = trim($string, '-'); 
+1

Il n'est pas vraiment utile de poster une réponse partielle 3 ans après que la question soit posée –

+2

Beaucoup viennent via Google ** tous les jours **. Cette information est lue tous les jours pour ces trois années et elle durera. Malheureusement, n'a pas pu ajouter cela comme commentaire. – dragonattack

Questions connexes