PHP - манипуляции со строками удаляют специальные символы и заменяют пробелы - PullRequest
4 голосов
/ 23 октября 2010

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

Ответы [ 5 ]

8 голосов
/ 23 октября 2010

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

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

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

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

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

3 голосов
/ 23 октября 2010

С str_replace:

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

Примечание:

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

2 голосов
/ 02 ноября 2018
$search_value =array(",",".",'"',"'","\\"," ","/","&","[","]","(",")"," 
{","}",":","`","!","@","#","%","=","+");
$replace_value =array("-","-","-","-","-","-","-","-","-","-","-","-","-","-","-","- 
","-","-","-","-","-");
$product_name = str_replace($search_value,$replace_value,$row["Product_Name"]);
$product_name = str_replace("--","-",$product_name);
$product_name = str_replace("--","-",$product_name);
$product_name = preg_replace('/-$/', '', $product_name);
$product_name = preg_replace('/^-/', '', $product_name);

Это создаст пунктирную строку (имеет только буквенно-цифровой символ с дефисом). Полезно для создания строк URI.

2 голосов
/ 23 октября 2010

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

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

setlocale(LC_ALL, 'fr_CA.utf8');
$str = "%#dŝdèàâ.,d s#$4.sèdf;21df";

$str = iconv("UTF-8", "ASCII//TRANSLIT", $str); // "%#dsdeaa.,d s#$4.sedf;21df"
$str = preg_replace("`[^\w]+`", "", $str); // "dsdeaad s4sedf21df"
$str = str_replace(" ", "-", $str); // "dsdeaad-s4sedf21df"
$str = trim($str, '-'); // "dsdeaad-s4sedf21df"
1 голос
/ 23 октября 2010
str_replace(' ','-',$string);

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

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

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

 htmlspecialchars($string);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...