preg_match_all проблема

Oberst

Новичок
preg_match_all проблема

в запросе вида

(select t1.f1, t2.f2, t1.f1 from t1, t2, t3 where blablabla)
union
(select t1.f1, t2.f2, t1.f1 from t1, t2, t3 where blablabla)

нужно t1.f1, t2.f2, t1.f1 заменить на count(*)


1. preg_match_all почемуто выдает последнее совпадение, предыдущие пропускает
2. как их всех можно реплейснуть

PHP:
$pattern = '/^.*select[\s]+(.+)[\s]+from[\s]+.+)$/';
 

Oberst

Новичок
еще стоит задача вытянуть t1.f1, t2.f2, t1.f1 из общей строки
 

Anarki

Новичок
PHP:
<?php
$text =<<<ET
(select t1.f1, t2.f2, t1.f1 from t1, t2, t3 where blablabla)
union
(select t1.f1, t2.f2, t1.f1 from t1, t2, t3 where blablabla)
ET
;
$pattern = '/\(select\s(?:.*?)from/';
echo preg_replace($pattern, '(select count(*) from', $text);
?>
Чтобы вытянуть, хм, ну можно таким регекспом

/(t\d+\.f\d+)/
 
Сверху