Замена подстроки в строке

STALK3R

Новичок
Замена подстроки в строке

Вопрос вот в чём, допустим есть строка select lalala from её надо переделать в select another from
Столкнулся с проблемой:
Если паттерн выглядит так
PHP:
select ([^from]) from
То в [^from] проверяется чтобы не встречалась любая из букв (f, r, o, m) а нужно чтобы отрицание относилось именно ко всему слову from, т.е. в строке вроде
PHP:
[B]select[/B] field1, firld2 from fields <...>
не получится бреда типа
select another ield1, field2 from fields <...>
 

Фанат

oncle terrible
Команда форума
$query="select $lalala from";
$lalala="another";
echo $query;

и только так
 

STALK3R

Новичок
Автор оригинала: Фанат
а фигли?
Как фигли, строка действительно уже существует.
Если описать ситацию подробнее, есть у меня какой-то сложный запрос (select * from ...) и мне нужно заменить выборку полей (там где field1, field2) на COUNT(*), т.е. посчитать кол-во строк которые потом вернёт результат. кол-во строк мне нужно ещё до выполнения самого запроса (чтобы потом организовать постраничную навигацию), выполнять запрос лишний раз и делать mysql_num_rows() слишком накладно, когда можно потратить всего пару байт памяти чтобы просто получить число - кол-во строк.
Это если кратко)))
Но вобще дейстительно хочется найти способ группировки отрицания, чтобы отрицалось именно всё слово а не каждый символ, его состовляющий.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
а кто мешает собирать строку запроса из кусков?
PHP:
$from=' from ';
$fields='field1, field2';
$query= 'select '.$fields.$from;
execute();
...
$fields='COUNT(*)';
$query= 'select '.$fields.$from;
execute();
Только это тебе не поможет - или 2й запрос, или SQL_CALC_FOUND_ROWS.
 

STALK3R

Новичок
Вобще была мысль собирать запрос, просто надо тогда переписывать уже кучу кода. Вобще запросы у еня итак сборные, просто всё до where/limit/order я пишу сразу без сбора.
 

alexv

Новичок
Автор оригинала: STALK3R
Но вобще дейстительно хочется найти способ группировки отрицания, чтобы отрицалось именно всё слово а не каждый символ, его состовляющий.
А чем (?!from) не нравится?
 

STALK3R

Новичок
Чтобы регексп включал в понятие (.*) всё что встретится до первого FROM, иначе он туда включает всё до последнего FROM
 

STALK3R

Новичок
О спс, как то и не догадался, что можно жадным поиском обойтись
 
Сверху