2012-05-05 6 views
0

MySQL의의 ORDERBY 문자열 구문 분석 :정규 표현식 내가 이러한 문자열 가질 수

  1. "볼륨 오름차순을 판 내림차순"

내가 원하는 "볼륨 ASC, othercolumn DESC는, DESC COLUMNX"

  1. 배열 ('볼륨', '오름차순', '판', 'desc');
  2. 배열 ('volume', 'asc', 'othercolumn', 'desc', 'columnx', 'desc');

regexp/preg_match 기능을 사용하여 연결하는 방법은 무엇입니까?

답변

2

를 사용하여 소문자로 각각의 문자열을 변환 할 수 있습니다 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 
) 
+0

이것과 @vaichidrewar가 대답 한 바에 따르면, 그는 'strtolower'를 사용하여 모두 소문자로 변환 할 수 있습니다. 이 방법으로 호출 될 수 있습니다 :'array_walk ('strtolower', $ res)' – Lumbendil

+0

완벽! 고마워요 –

+0

@ MarcoPanichi : 천만에요. – Toto

1

PHP SQL Parser과 같은 구문 분석을 사용하는 것이 더 좋습니다. 당신은 사용할 수

-1
$str = 'volume asc, edition desc'; 
$chars = preg_split('/ /', $str); 
print_r($chars); 

Array ([0] => volume [1] => asc, [2] => edition [3] => desc) 

당신하여 strtolower 기능

+0

내가 알 수 다운 투표? – vaichidrewar