Итак, я написал код для создания SEO-дружественных URL.Эти функции сначала создают дружественный к слагу слаг, а затем, если слаг уже существует, это БД (в данном случае массив), затем они добавляют число с тире рядом с ним.если это также существует, то они просто +1 к номеру, а затем проверяют снова и снова ...
например.если я передам "заголовок URL" в функцию.Сначала он преобразует его в «title-url», и если «title-url» уже существует, то он добавит число, подобное «title-url-1», если он существует, то он будет +1 к числу, как «title-».url-2 ", а затем" title-url-3 "и так далее ...
это код:
// CONVERTS STRING TO URL SLUG
function str_to_slug($str){
$str = strtolower(trim($str));
$str = preg_replace('/[^a-z0-9-]/', '-', $str);
$str = preg_replace('/-+/', "-", $str);
return $str;
}
// RETURN SLUG URL
function slug($title){
$ori_url = str_to_slug($title);
if( does_slug_exists($ori_url) ){
return loop_slug_number($ori_url, 1);
}
else{
return $ori_url;
}
}
// ADD NUMBER
function loop_slug_number($slug, $number){
if( does_slug_exists($slug.'-'.$number) ){
loop_slug_number($slug, $number++);
exit;
}
else{
return $slug.'-'.$number;
}
}
// CHECKS WHEATHER THE SLUG EXISTS IN THE DB
function does_slug_exists($slug){
$array = array("title", "title-0", "title-1", "title-2");
return (in_array($slug, $array)) ? true : false;
}
я думаю, что все должно работать нормально.но когда я повторяю слизень ("название");я получаю
Fatal error: Maximum function nesting level of '100' reached, aborting!
номер строки ошибки в функции do_slug_exists () в строке 'return'.
(массив только для примера, я буду использовать проверку db.)
также, если я заменю массив на:
$array = array("title", "title-0", "title-2", "title-3");
, тогда я верну title-1.
Где ошибка?