siv1987, а как правильно в регэксп подставить эти знаки в hex формате - 3E и 3C ? может тогда заработает..
тут можно проверять, если is_numeric - те не подставлять %%, а в иных случаях подставлять, я так подумал сделать...
У вас какая кодировка? у меня utf8
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;
то что выводится в браузер на картинке
siv1987, и правда все работает, извеняюсь, но почемуж в моем скрипте непашет как надо( ведь все тоже на входе
siv1987, всеравно результат тот же(---------- Добавлено 08.01.2015 в 23:19 ----------вся соль в знаках > и <
не могу понять почему
siv1987, я запускал код, если попадается знак ">" - то отрабатывает не верно. Я выше описал результат тестирования - какую строку кормил и что на выдаче получил
siv1987,siv1987, спасибо, протестил ваш вариантик, немного не так в результирующей строке:
name LIKE ? && (:id>40 && sect LIKE ?) - здесь вместо ":id>40" - должно быть просто "id>" и в массиве $param всего два элемента, а должно быть три и вторым должен быть параметр "40".---------- Добавлено 08.01.2015 в 21:34 ----------Пробовал такую строку исходную - :name=первая && :sect=abc - работает
но если в строке уже есть знак > и число то все работает не так
Например при такой исходной строке :name=первая && :sect>40 - результирующая выглядит так - name LIKE ? && :sect>40 и массив так:
array(1) { [0]=> string(12) "первая"}
loadContent перезаписывала весь блок и сбрасывала поля. я недосмотрел. поэтому добавил callback в нее и все стало работать как надо:
function(){ if(sortField.length>1){ //если была сортировка по столбцу var cls = null; switch(sortDirect){ case 'ASC': cls = 'sort-asc'; break; case 'DESC': cls = 'sort-desc'; break; } $('.col-head[data-colkey="'+sortField+'"] span').addClass(cls); }
Mad_Man, Первый раз о них слышу. Мне нужна строка такого вида: "name LIKE ? && (id> && sect LIKE ?)" - потому что я использую обёртку для PDO, которая из такой строки + массив делает запрос. Не знаю как прикрутить лексемы(
проблема решена, закрывайте)