タイトルが少しわかりにくいことは知っていますが、例を次に示します。
弦:SELECT * FROM tbl_clients ORDER BY updatedOn LIMIT 0,50
私が欲しいのは、後 FROM
にすべてを取り、それを新しい文字列に入れることです。
したがって、結果の文字列は次のようになります。tbl_clients ORDER BY updatedOn LIMIT 0,50
彼をする方法はありますか?
タイトルが少しわかりにくいことは知っていますが、例を次に示します。
弦:SELECT * FROM tbl_clients ORDER BY updatedOn LIMIT 0,50
私が欲しいのは、後 FROM
にすべてを取り、それを新しい文字列に入れることです。
したがって、結果の文字列は次のようになります。tbl_clients ORDER BY updatedOn LIMIT 0,50
彼をする方法はありますか?
さて、あなたはそのように爆発を使うことができます:
$string="SELECT * FROM tbl_clients ORDER BY updatedOn LIMIT 0,50";
$split=explode("FROM", $string, 2);
//Restricts the split to 2 elements, i.e., everything after first occurrence goes in the second element
$result=$split[1];
あなたは次のようなことを試すことができます
$mystring = "SELECT * FROM tbl_clients ORDER BY updatedOn LIMIT 0,50";
$spliter = "FROM ";
$splitstring = explode($spliter, $mystring);
$result = $splitstring[1];
これを行うには数十の方法(stripos-substr、explode)などがありますが、preg_split()の方法は次のとおりです。
$sql =
"SELECT * FROM tbl_clients ORDER BY updatedOn " .
"WHERE `from`='something' LIMIT 0,50";
$r = preg_split( "/FROM /i", $sql );
print_r( $r );
遊ぶための$r[1]を提供します:
Array
(
[0] => SELECT *
[1] => tbl_clients ORDER BY updatedOn WHERE `from`='something' LIMIT 0,50
)
ステートメント全体を解析するなど、preg_splitが非常に便利な場合があります。
$r = preg_split( "/(SELECT)|(FROM)|(ORDER BY)|(WHERE)|(LIMIT)/i", $sql );
1つのステートメントであなたにきちんとした内訳を与えます:
Array
(
[0] =>
[1] => *
[2] => tbl_clients
[3] => updatedOn
[4] => field='something'
[5] => 0,50
)
文字列を分割FROM
して配列を作成し、配列の1番目の要素にアクセスします。
$query_array = preg_split("/FROM /i", "SELECT a,b,d FROM tableA WHERE b=2", 1);
$table_and_clause = $query_array[1]; // "tableA WHERE b=2"...