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

  • Автор темы Автор темы STALK3R
  • Дата начала Дата начала

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 <...>
 
Автор оригинала: Фанат
а фигли?
Как фигли, строка действительно уже существует.
Если описать ситацию подробнее, есть у меня какой-то сложный запрос (select * from ...) и мне нужно заменить выборку полей (там где field1, field2) на COUNT(*), т.е. посчитать кол-во строк которые потом вернёт результат. кол-во строк мне нужно ещё до выполнения самого запроса (чтобы потом организовать постраничную навигацию), выполнять запрос лишний раз и делать mysql_num_rows() слишком накладно, когда можно потратить всего пару байт памяти чтобы просто получить число - кол-во строк.
Это если кратко)))
Но вобще дейстительно хочется найти способ группировки отрицания, чтобы отрицалось именно всё слово а не каждый символ, его состовляющий.
 
а кто мешает собирать строку запроса из кусков?
PHP:
$from=' from ';
$fields='field1, field2';
$query= 'select '.$fields.$from;
execute();
...
$fields='COUNT(*)';
$query= 'select '.$fields.$from;
execute();

Только это тебе не поможет - или 2й запрос, или SQL_CALC_FOUND_ROWS.
 
Вобще была мысль собирать запрос, просто надо тогда переписывать уже кучу кода. Вобще запросы у еня итак сборные, просто всё до where/limit/order я пишу сразу без сбора.
 
Автор оригинала: STALK3R
Но вобще дейстительно хочется найти способ группировки отрицания, чтобы отрицалось именно всё слово а не каждый символ, его состовляющий.
А чем (?!from) не нравится?
 
Чтобы регексп включал в понятие (.*) всё что встретится до первого FROM, иначе он туда включает всё до последнего FROM
 
О спс, как то и не догадался, что можно жадным поиском обойтись
 
Сверху