2012-03-02 1 views
0

Я пытаюсь создать функцию для создания постоянных ссылок. Это то, что я до сих пор:Как создать постоянные ссылки без нескольких тире друг за другом?

public function createPermalink($permalink)  
{  
    $new_perma = strtolower($permalink);  
    $searchsigns = array('Ö', 'Ä', 'Ü', 'ß', '-', '_', ' ', 'ö', 'ä', 'ü');  
    $replaces = array('oe', 'ae', 'ue', 'ss', '', '-', '-', 'oe', 'ae', 'ue');  
    $new_perma = str_replace($searchsigns, $replaces, $new_perma);  
    $new_perma = preg_replace('/[^a-z0-9_-]/isU', '', $new_perma);  
    return $new_perma;  
} 

Теперь представьте переменная $ Постоянная ссылка будет сказать 5 свободных пространств (не имеет смысла, но пользователь мог войти в него). Теперь, что произойдет, так это то, что $ new_perma будет ----- Итак, есть проблема, в URL-адресе разрешено только одно -. Очевидно, я мог в конце использовать str_replace, чтобы заменить 2, 3, 4, 5 ... тире позади друг друга. Но мне нужно указать шаблон поиска для любого возможного количества тире. Так что мне нужен способ удалить все черточки внутри переменной $ new_parma, которые более одного подряд.

ответ

3

Добавить это как раз перед возвращением вашей функции:

$new_perma = preg_replace('/-+/', '-', $new_perma); 

The + означает 'один или более'. Таким образом, этот шаблон заменяет одну или несколько тире одним тире.

1

Посмотрите на мою функцию urlify(). В отличие от вашей функции, он обрабатывает больше символов, отличных от ASCII (и заменяет «ä» на «ae» и т. Д.).

+0

Он тоже заменяет буквы акцентом? Например, до – phpheini

+0

да, да. посмотрите на второй файл сущности, чтобы увидеть пример использования. – rodneyrehm

+0

Очень приятно, используя вашу функцию сейчас! Большое спасибо! – phpheini

Смежные вопросы