Как создать постоянные ссылки без нескольких штрихов друг за другом? - PullRequest
0 голосов
/ 02 марта 2012

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

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

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

Ответы [ 2 ]

3 голосов
/ 02 марта 2012

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

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

+ означает «один или несколько».Таким образом, этот шаблон заменяет один или несколько штрихов одним штрихом.

1 голос
/ 02 марта 2012

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

...