2013-05-02 3 views
1

Моя проблема заключается в том, что я создаю небольшую поисковую систему с нуля, но меня перепутали, если я ищу по-русски или на любом другом языке, кроме английского. Я надеялся, что кто-то может дать мне код с регулярным выражением, который может отфильтровать (не просто обнаружить, автоматизировать фильтрацию) русские буквы или любые другие буквы, кроме английских букв, и специальные символы клавиатуры (-/:;() $ & @»-.. и т.д.) Позже я реализую другую языковую поддержку для моего двигателя, но сейчас я хочу, чтобы закончить основание двигателяРазрешить только английские символы/буквы/цифры и несколько специальных символов

заранее спасибо

+0

Но регулярное выражение предназначено для случаев, подобных вашим, почему вы не хотите его использовать? – Darvex

+0

Если альтернатив регулярному выражению нет, я думаю, все будет хорошо. Я просто не могу учить регулярное выражение, это кажется слишком сложным для меня. – VladHQ

+1

@TillHelge ответ есть решение регулярных выражений. – HamZa

ответ

5

Вы можете создать.. массив допустимых символов, а затем фильтровать те, которые недопустимы:

$allowed = array_merge(range('a', 'z'), range('A', 'Z'), range(0, 9), array(' ', '+', '/', '-', '*', '.')); // Create an array of allowed characters 

$string = 'This is allowed and this not é Ó ½ and nothing 123.'; // test string 

$array = str_split($string); // split the string (character length = 1) 

echo implode('', array_intersect($array, $allowed)); // Filter and implode ! 

Online demo.

+1

Это кажется очень интересным. Большое спасибо, я попробую! – VladHQ

0

Зачем вам сложно? Регулярное выражение будет читать содержимое строки, поэтому лучше сделайте это самостоятельно. Прочитайте символы строки и проверьте их соответствующее значение ASCII.

Создайте структуру hashset как SplStorageObject и проверьте вручную, если символы попадают в желаемый набор. Вы можете добавить любые символы, которые вы хотите прочитать для этого набора.

EDIT - Возможно, вы захотите также использовать регулярное выражение - что-то вроде [a-zA-Z0-9,. + + & -], но с помощью набора вы можете постепенно расширять свою поисковую систему, добавляя больше символов в набор известных символов.

0

это не может быть наиболее эффективным способом, но это работает :)

$str='"it is a simple test \ + - é Ó ½ 213 /:;()$&@".~" '; 
$result= preg_replace('/[^\s\w\+\-\\":;@\(\)\$\&\.\/]*/', '', $str); 
echo $result; 

но вам нужно добавить каждые специальные символы.

Смежные вопросы