2011-02-01 8 views
1

私は、クリーンアップして配列に入れたいので、mysqlで検索できます。PHPは何かを配列に分解しますが、その間の値を使用します


// Here's one example of what the string might have: 
$string1 = "(1) *value1* *value2*; (2) *value3* *value4* *value5*; (3) *value6*"; 
// And here's another possibility: 
$string2 = "*value1* *value2* *value3* *value4*"; 

// I want to remove all the "(#)" stuff, and explode all the values into an array 
// This is what I have so far: 
// $string can be like the examples $string1 or $string2 

$string_clean = str_replace("* *","",trim(preg_replace("/\((\d)\)/i", "", $string))); 
$my_array = explode('*', trim($string_clean, '*')); 

しかし、これは私が取得していますものです:

Array ([0] => value1 [1] => [2] => value2 [3] => [4] => value3 [5] => [6] => value4 [7] => [8] => value5) 

を私はちょうど配列からすべての空の項目を削除する機能を見つけることができると仮定し、しかし、これを行うより効果的な方法があるのだろうかと思います。

+0

値にスペースが含まれていないと、 'str_replace()'で '*'と ';'、 '' preg_repalce() '' '(#)'、 '' 'すべての値を取得します。 –

答えて

3

あなたはpreg_match_all()が必要です

preg_match_all('#\*([^*]+)\*#', $string, $matches); 
$result = $matches[1]; 
// $result is array('value1', 'value2', ...) 

これは、すべての*something*を見つけると*間の文字列を返します。

+0

ありがとうございました!配列内の配列で面白い結果が得られました。 – Jay

+0

はい、結果は$ matches [1]にあります。$と一致しません:-) – arnaud576875

+0

配列([0] => 配列( [0] ] => *値1 * [1] => *値2 * [2] => * VALUE3 * [3] => * value4 * [4] => * VALUE5 *) [1] => アレイ( [0] => *値1 * [1] => *値2 * [2] => * VALUE3 * [3] => * value4 * [4] => * VALUE5 *) ) – Jay

関連する問題