私はこの正規表現の質問
SELECT a, (SELECT b FROM w), (SELECT c FROM x) FROM y WHERE a IN (SELECT d FROM z)
のようなクエリがあると私はPHPで
SELECT COUNT(*) FROM y WHERE a IN (SELECT d FROM z)
に変換します。これはサンプルであり、quiresはこれとは異なります。
実際に正規表現は、最初のSELECTとFROMのペアの間のすべてをCOUNT(*)で置き換えるだけで、その後はSELECTに触れないようにする必要があります。また、最初のペアの中にいくつかの他のSELECT FROMペアがあり、それを置き換えることも考慮する必要があります。
私は
preg_replace('/SELECT (.*?) FROM/', 'SELECT COUNT(*) AS count FROM', $sql, 1)
今これを使用するが、それは
これは非常に奇妙な作業のようです。なぜそれをしようとしているのか、より高いレベルの問題に対するより良い解決策があるのか考えてみてください。 –
実際のパターンは何ですか? 'str_replace( 'SELECT f1、f2、(SELECT f3 FROM t2)からt1 WHERE f1 IN(SELECT f4 FROM t)'、 'SELECT COUNT(*)from t1 where f1 IN FROM t) ') ' – NullUserException
これはstr_replaceを使うことができる場合だけです – dynamic