PHP – манипуляция с строками удаляет симпатичные символы и заменяет пробелы

Я получаю строки из базы данных, а затем использую строки для создания URL-адреса. Моя проблема в том, что некоторые из строк будут иметь символы, такие как общие специальные символы <> & {} *, но строка также может содержать строки. Как бы заменить пробелы черточками и полностью удалить и специальные символы из строк?

С str_replace :

 $str = str_replace(array(' ', '<', '>', '&', '{', '}', '*'), array('-'), $str); 

Заметка:

Если замена имеет меньше значений, чем поиск , то для остальных значений замены используется пустая строка.

Храните только буквы и цифры в строке, используя preg_replace :

 $string = preg_replace('/[^a-zA-Z0-9-]/', '', $string); 

Вы можете использовать str_replace для замены пространства –

 $string = str_replace (" ", "-", $string); 

Посмотрите на следующую статью:

  • Как очистить специальные символы от строки PHP

1) Замените диакритические знаки iconv
2) Замените не буквенные символы пустой строкой
3) Замените пробелы тире
4) Обрезать строку для тире символов (вы также можете обрезать строку перед манипуляциями)

Например, если вы используете кодировку UTF-8:

 setlocale(LC_ALL, 'fr_CA.utf8'); $str = "%#dŝdèàâ.,ds#$4.sèdf;21df"; $str = iconv("UTF-8", "ASCII//TRANSLIT", $str); // "%#dsdeaa.,ds#$4.sedf;21df" $str = preg_replace("`[^\w]+`", "", $str); // "dsdeaad s4sedf21df" $str = str_replace(" ", "-", $str); // "dsdeaad-s4sedf21df" $str = trim($str, '-'); // "dsdeaad-s4sedf21df" 
 str_replace(' ','-',$string); 

буквенно-цифровые:

 $output = preg_replace("/[^A-Za-z0-9]/","",$input); 

если вы хотите сохранить символы:

  htmlspecialchars($string);