Регуляция регулярных выражений (PHP)

Я хотел бы дезинформировать строку в URL, так что это то, что мне в основном нужно.

  1. Все должно быть удалено, кроме буквенно-цифровых символов и пробелов.
  2. Пробелы должны быть преобразователями в тире.

Например.

This, is the URL! 

должен вернуться

 this-is-the-url 

 function slug($z){ $z = strtolower($z); $z = preg_replace('/[^a-z0-9 -]+/', '', $z); $z = str_replace(' ', '-', $z); return trim($z, '-'); } 

Первые полосы нежелательных символов

 $new_string = preg_replace("/[^a-zA-Z0-9\s]/", "", $string); 

Затем изменяет пробелы для символов unserscores

 $url = preg_replace('/\s/', '-', $new_string); 

Наконец, закодируйте его для использования

 $new_url = urlencode($url); 

Попробуй это

  function clean($string) { $string = str_replace(' ', '-', $string); // Replaces all spaces with hyphens. $string = preg_replace('/[^A-Za-z0-9\-]/', '', $string); // Removes special chars. return preg_replace('/-+/', '-', $string); // Replaces multiple hyphens with single one. } 

Применение:

 echo clean('a|"bc!@£de^&$f g'); 

Вывод: abcdef-g

источник: https://stackoverflow.com/a/14114419/2439715

Это будет сделано в оболочке Unix (я просто попробовал это на своем MacOS):

 $ tr -cs A-Za-z '-' < infile.txt > outfile.txt 

Я получил идею из блога на More Shell, Less Egg

Все предыдущие пользователи имеют дело с URL-адресом, но в случае, если кому-то понадобится очистить строку для входа (например) и сохранить ее как текст, вот вам:

 function sanitizeText($str) { $withSpecCharacters = htmlspecialchars($str); $splitted_str = str_split($str); $result = ''; foreach ($splitted_str as $letter){ if (strpos($withSpecCharacters, $letter) !== false) { $result .= $letter; } } return $result; } echo sanitizeText('ОРРииыфвсси ajvnsakjvnHB "&nvsp;\n" <script>alert()</script>'); //ОРРииыфвсси ajvnsakjvnHB &nvsp;\n scriptalert()/script //No injections possible, all info at max keeped