Regexp 来解析 MySQL OrderBy 字符串


regexp to parse a mysql orderby string

>我可以有这些字符串:

  1. "卷ASC,版本说明"
  2. "卷 ASC, 其他列描述, 列 x DESC"

我想获取这样的数组:

    数组( '卷', 'ASC', '
  1. 版本', 'desc' );
  2. array( 'volume', 'asc', 'othercolumn', 'desc', '
  3. columnx', 'desc' );

如何使用正则表达式/preg_match函数来实现这一点?

您可以使用

preg_split:

$arr = array(
    "volume asc, edition desc",
    "volume ASC, othercolumn desc, columnx DESC"
);
foreach($arr as $str) {
    $res = preg_split('/[ ,]+/', $str);
    print_r($res);
}

输出:

Array
(
    [0] => volume
    [1] => asc
    [2] => edition
    [3] => desc
)
Array
(
    [0] => volume
    [1] => ASC
    [2] => othercolumn
    [3] => desc
    [4] => columnx
    [5] => DESC
)

使用像PHP SQL Parser这样的解析器会是一个更好的方法。

$str = 'volume asc, edition desc';
$chars = preg_split('/ /', $str);
print_r($chars);
Array ( [0] => volume [1] => asc, [2] => edition [3] => desc )

您可以使用 strtolower 函数将每个字符串转换为小写