preg_replace не позволяет мне ставить пробелы в моем поиске

0

Мой код, кажется, не позволяет мне помещать пробелы в окно поиска, если я искал "привет мир", он будет искать его как "helloworld". Я использую preg_replace поэтому людям не разрешается помещать другие символы ("'! @# $% ^ &() ~' + -//) ни один из них, кроме букв. Почему он заменяет пробелы?

Код:

$search = preg_replace ("#[^0-9a-z]#i","",$search);
  • 0
    ваша замена удаляет все, что не 0-9, аз.
  • 1
    Космос тоже персонаж. И это не между азимутом и не 0-9, вы можете сделать обоснованное предположение, почему его лишают?
Теги:
search
preg-replace
search-engine

1 ответ

1

Ладно, позволь мне разобраться с тобой. Поскольку это ваше регулярное выражение ищет

[^0-9a-z]

^ - означает отрицание в регулярном выражении (ну не совсем, это означает "все, кроме..."), а затем за ним следуют два диапазона: 0-9 и az. Это означает, что любой символ, который не относится к этим двум точным наборам, будет улавливаться этим выражением. Это включает арабские символы, специальные символы и пробелы. Чтобы заставить его работать так, как вам нужно, вам нужно будет добавить пробел в выражение:

[^0-9a-z ]

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню