2016-04-11 3 views
1

У меня есть система блог, где пользователь ввести название и от него я сделать URL здесь есть функция для создания URL-адресаУдалить дополнительный тир из URL

function create_slug($string){  
    $replace = '-';   
    $string = strtolower($string);  

    //replace/and . with white space  
    $string = preg_replace("/[\/\.]/", " ", $string);  
    $string = preg_replace("/[^a-z0-9_\s-]/", "", $string);  

    //remove multiple dashes or whitespaces  
    $string = preg_replace("/[\s-]+/", " ", $string);  

    //convert whitespaces and underscore to $replace  
    $string = preg_replace("/[\s_]/", $replace, $string);  

    //limit the slug size  
    $string = substr($string, 0, 100);  

    //slug is generated  
    return $string; 
}  

Если пользователь вводит название «Привет, как ты», то становится "Привет как дела"!

Теперь проблема, с которой я сталкиваюсь, заключается в том, что если пользователь дает дополнительное пространство после «вы», тогда он становится «hello-how-are-you-». как избежать лишней тире?

+5

* отделка() * значения; Кроме того, вы можете посмотреть «preg_replace» в руководстве. Сэкономит вам много вызовов функций – Rizier123

+0

@ Rizier123 вы можете ответить на ваш комментарий – jekaby

ответ

1

Как и в случае с Rizier123, trim() удалит пробелы до и после введенного значения, не забудьте, что перед тем, как заменить все пробелы на дефисы, вы должны указать trim().

Потому что:

trim() составит от "hello how are you " =>"hello how are you"

но из "hello-how-are-you-" это сделает "hello-how-are-you-"

+0

ps: вы можете ввести аргумент в trim(), чтобы указать, что он должен обрезать (пространство включено в качестве стандарта, но вы можете ввести все, что вы хотел :)) Ссылка на документацию об обрезке: http://php.net/manual/en/function.trim.php –

0

Что вы пытаетесь сделать, это создать пули для названия. Вот для этого link.

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