Замена определенных символов при разрешении Unicode (PHP) - PullRequest
2 голосов
/ 30 ноября 2010

Итак, у меня есть поисковое окно на сайте, который мы разрабатываем, которое будет искать в базе данных с английскими и греческими строками.Я пытаюсь очистить ввод текста от всех видов специальных символов, таких как: /., '] [% & _ и т. д. и замените их пробелом или полностью удалите их.Даже двойные экземпляры их должны быть удалены, например ^^, &&, [[и т. Д.

. Я возился с preg_replace, но не могу найти решение ...

Спасибо завперед.

Ответы [ 3 ]

3 голосов
/ 30 ноября 2010

Я наконец придумал это:

$term = preg_replace("/[^\p{Greek}a-zA-Z0-9\s]+/u", '', $term);

Кажется, это работает для того, что мне нужно.Это позволяет греческие символы (даже с акцентами), буквенно-цифровые и пробелы.Заменяет все остальное пробелом.Спасибо за быстрый ответ, ребята.

2 голосов
/ 30 ноября 2010

С помощью preg_replace вы можете делать то, что ищете. В следующем примере все не a-z, ни A-Z, ни / _ | + - символы заменяются на '' (ничего, пустая строка)

preg_replace("/[^a-zA-Z0-9\/_|+ -]/", '', $str);

добавьте символы, которые вы хотите разрешить в этом списке, и вы получите свою функцию.

Другой способ был бы с str_replace(), но здесь вы должны вставить по одному все элементы, которые вы хотите удалить в различных вызовах функций.

Надеюсь, это поможет

0 голосов
/ 30 ноября 2010

Почему бы не сделать массив и использовать str_replace?

$unallowedChars = array("^", "&", "/", "."); // more for your choosing

$searchContent = str_replace($unallowedChars, "", $searchContent);

Заменяет все значения массива на "", другими словами, ничего.

...