- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
В 2023 году 36,9% всех DDoS-атак пришлось на сферу финансов
А 24,9% – на сегмент электронной коммерции
Оксана Мамчуева
Что делать, если ваша email-рассылка попала в спам
10 распространенных причин и решений
Екатерина Ткаченко
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
siv1987, так вот выглядит код
if(strlen($str)>=1){
if(substr($str,0,1)==":"){ //если выражение
echo $str.'<br>';
$param = array();
preg_match_all('/:([\w_]+)\s*([<>=]{1,2})\s*(["\'].*?["\']|[^\s()]+)/', $str, $out);
for($i=0; $i<count($out[0]); $i++){
$key = $out[1][$i];
$sign = $out[2][$i];
$val = $out[3][$i];
$str = str_replace($out[0][$i], $key.(($sign == '=') ? ' LIKE' : $sign).' ?', $str);
$param[] = "%".$val."%";
}
echo $str.'<br>';
console($param);
exit;
то что выводится в браузер на картинке
И немного изварата
'/(^|[&]{2}|[|]{2})\s*(\(*)\s*:([\w_]+)\s*([<>=]{1,2})\s*(["\'].*?["\']|[^\s()]+)\s*(\)*)/'чтобы разбить выражение на составляющие и написать свой конструктор
А если нужно точное совпадание? Я бы использовал id==40 для точного поиска без %%.
Возможно символы <> кодируются по разному в разных кодировках (как вариант).
А если нужно точное совпадание?
тут можно проверять, если is_numeric - те не подставлять %%, а в иных случаях подставлять, я так подумал сделать...
Возможно символы <> кодируются по разному в разных кодировках (как вариант).
У вас какая кодировка? у меня utf8
Не правильно думайте, так как это может быть и строка, а может быть наоборот число которое нужно искать в подстроке.
И на форуме утф. А ваше выражение возможно приходит в другой кодировке. Хотя это в порядке бреда, так как если я не ошибаюсь эти символы кодируются одинаково и в cp1251. Смотрите побайтого на строку.
siv1987, а как правильно в регэксп подставить эти знаки в hex формате - 3E и 3C ? может тогда заработает..
http://php.net/manual/ru/regexp.reference.escape.php
siv1987, так ничего не изменилось:
preg_match_all('/:([\w_]+)\s*([\x3C\x3E=]{1,2})\s*(["\'].*?["\']|[^\s()]+)/', $str, $out);А вот если так регулярку запилить:
/:([\w_]+)\s*([^<>=]{1,2})\s*(["\'].*?["\']|[^\s()]+)/то вывод такой (тот же пример)
работает, но тут приклеиваются лишние символы в начало
---------- Добавлено 09.01.2015 в 00:39 ----------
тут конечно можно сделать str_replace в $val символов "t;" и "=", но всеже как в регулярке это сделать?
Не надо дергать регулярку - там все нормально. Копайте свою строку.