Некоторое время искал, но поскольку я не понимаю параметры предварительной замены, которые могут быть введены, я не могу решить свою проблему, просмотрев похожие вопросы. (поэтому я хотел бы попросить вас объяснить каждый знак в вашем ответе?)preg_replace все, кроме буквенно-цифровых и акцентов
Я хочу отфильтровать строку и заменить все, что не является буквенно-цифровым или акцентом с пробелом. (После этого я использую preg_split, чтобы составить список из них).
Здесь символы, которые я называю акцентами, показаны только в нижнем регистре, но также хотят сохранить варианты в верхнем регистре (возможно, забыли несколько). Мне действительно нужны левые знаки. Данное право не является обязательным:
é è ë ï ê ç ü ö ä ú ó á ã õ ñ å û â ô
Мне нужно это, потому что я должен искать в своей базе данных (подготовленные заявления) для этого.
В настоящее время я использую:
$terms=preg_split('/\s+/', preg_replace('/[^a-zA-Z0-9À-ÿ]+/', ' ', $_GET['ter']));
Но следующий пример показывает, что он не оставляет знаки, как они:
url example: mydomain.com/index.php?ter=léopold
$terms=preg_split('/\s+/', preg_replace('/[^a-zA-Z0-9À-ÿ]+/', ' ', $_GET['ter']));
foreach ($erms as $term){echo " term: ".$term;}
Outputs:
term: l� term: opold
What i want it to be:
term: léopold
Поэтому мне нужно создать preg_replace, который не вредит акценты, особенно те, которые написаны слева в первом кодовом блоке
Это сработало. Thx, но зачем нужна поддержка многобайтов? – Pepe
из-за акцентов –