Действующее слово быть "должно".
, Если бы необходимо гарантировать futureproofing тогда, можно создать собственный класс даты/времени и использование это, но я только сделал бы это, если Вы думаете, что то, что Вы пишете, будет использоваться на ОС прежней версии
// normalize data (remove accent marks) using PHP's *intl* extension
$data = normalizer_normalize($data);
// replace everything NOT in the sets you specified with an underscore
$data = preg_replace("#[^A-Za-z1-9]#","_", $data);
Используйте iconv для преобразования строк из заданную кодировку в ASCII, затем замените не буквенно-цифровые символы, используя preg_replace :
$input = 'räksmörgås och köttbullar'; // UTF8 encoded
$input = iconv('UTF-8', 'ASCII//TRANSLIT', $input);
$input = preg_replace('/[^a-zA-Z0-9]/', '_', $input);
echo $input;
Результат:
raksmorgas_och_kottbullar
Если вас просто интересует безопасность URL-адресов, вам нужен urlencode
.
Возвращает строку, в которой все не буквенно-цифровые символы, кроме -_. были заменены на процент (%) знак, за которым следуют две шестнадцатеричные цифры и пробелы, закодированные знаком плюс (+). Это кодируется так же, как опубликованные данные из формы WWW закодировано так же, как в приложение / x-www-form-urlencoded тип носителя. Это отличается от » Кодировка RFC 1738 (см. Rawurlencode ()) в том, что по историческим причинам пробелы кодируются как знаки плюса (+).
Если вы действительно хотите удалить все символы, отличные от AZ, az, 1-9 (что, кстати, не так с 0
?), тогда вам нужно:
$mynewstring = preg_replace('/[^A-Za-z1-9]/', '', $str);
так же просто, как
$str = str_replace(array('å', 'ä', 'ö'), array('a', 'a', 'o'), $str);
$str = preg_replace('/[^a-z0-9]+/', '_', strtolower($str));
при условии, что вы используете одну и ту же кодировку для ваших данных и кода.
Одно простое решение - использовать функцию str_replace для поиска и замены массивов букв.
Вам не нужны необычные регулярные выражения для фильтрации шведских символов, просто используйте функцию strtr , чтобы «перевести» их, например:
$your_URL = "www.mäåö.com";
$good_URL = strtr($your_URL, "äåöë etc...", "aaoe etc...");
echo $good_URL;
-> output: www .maao.com :)
и весь шведский язык должен быть преобразован следующим образом:
'å' в 'a', 'ä' в 'a' и 'ö' в 'o' (просто удалите точки выше).
Используйте normalizer_normalize ()
, чтобы избавиться от диакритических знаков .
Остальные должны стать подчеркиваниями, как я сказал.
Используйте preg_replace ( )
с шаблоном [\ W]
(iow: любой символ, который не соответствует буквам, цифрам или знаку подчеркивания), чтобы заменить их знаками подчеркивания.
Окончательный результат должен выглядеть так:
$data = preg_replace('[\W]', '_', normalizer_normalize($data));