我知道标题有点混乱,但这里有一个例子:
细绳: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];
有很多方法可以做到这一点(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 );
在一个声明中为您提供更简洁的细分:
Array
(
[0] =>
[1] => *
[2] => tbl_clients
[3] => updatedOn
[4] => field='something'
[5] => 0,50
)
你可以尝试类似的东西
$mystring = "SELECT * FROM tbl_clients ORDER BY updatedOn LIMIT 0,50";
$spliter = "FROM ";
$splitstring = explode($spliter, $mystring);
$result = $splitstring[1];
对于无法阅读strpos()和substr()相应手册页的人
$string = 'SELECT * FROM tbl_clients ORDER BY updatedOn LIMIT 0,50';
$pos = strpos($string, ' FROM ');
$substring = substr($string, $pos + strlen(' FROM '));
拆分你的字符串FROM
给你一个数组,然后访问数组的第一个元素。
$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"...