0

我知道标题有点混乱,但这里有一个例子:

细绳:SELECT * FROM tbl_clients ORDER BY updatedOn LIMIT 0,50

我想要的是把所有的东西都放在 FROM一个新的字符串中。

所以我得到的字符串看起来像:tbl_clients ORDER BY updatedOn LIMIT 0,50

有什么办法可以做他的吗?

4

5 回答 5

3

好吧,你可以像这样使用爆炸

$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];
于 2012-11-05T14:48:57.417 回答
2

有很多方法可以做到这一点(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
)
于 2012-11-05T14:49:51.643 回答
2

你可以尝试类似的东西

$mystring = "SELECT * FROM tbl_clients ORDER BY updatedOn LIMIT 0,50";
$spliter = "FROM ";
$splitstring = explode($spliter, $mystring);

$result = $splitstring[1];
于 2012-11-05T14:43:16.297 回答
1

对于无法阅读strpos()substr()相应手册页的人

$string = 'SELECT * FROM tbl_clients ORDER BY updatedOn LIMIT 0,50';
$pos = strpos($string, ' FROM ');
$substring = substr($string, $pos + strlen(' FROM '));
于 2012-11-05T14:50:31.000 回答
1

拆分你的字符串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"...
于 2012-11-05T14:43:52.837 回答