2010-12-29 3 views
2

ADODBの値をJavaにアンシリアル化するには、この関数を移植する必要があります。ADODBで値をシリアル化しない特別な場合に、PHP preg_splitをJavaに移植するにはどうすればよいですか?

 $variables = array(); 
     $a = preg_split("/(\w+)\|/", $serialized_string, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE); 
     for($i = 0; $i < count($a); $i = $i+2) { 
      $variables[$a[$i]] = unserialize($a[$i+1]); 
     } 

私はPHPの値をシリアル化しないライブラリを用意していますが、私はpreg_splitを移植する際に助けが必要です。この正規表現はJavaでどのように見えますか?

+0

。そのコードをJavaに簡単に変換する方法はありません。おそらく、 'split()'ではなく 'find()'を使って別のアプローチをとる必要があります。 –

答えて

1

同等のJavaコードは:


import java.util.List; 
import java.util.ArrayList; 

// Test 
String serialized_string = "foo|bar|coco123||cool|||"; 

// Split the test 
String[] raw_results=serialized_string.split("\\|");// Trailing empty strings are removed but not internal ones 

// Cleansing of the results 
List<String> php_like_results = new ArrayList<String>(); 
for(String tmp : raw_results) { 
    if (tmp.length()>0) { 
     php_like_results.add(tmp); 
    } 
} 

// Output results 
System.out.println(php_like_results); 

これが生成されます:私たちは、入力し、所望の出力の例をいくつか必要になるだろう [foo, bar, coco123, cool]

+0

これは問題の特定の例では機能しますが、Javaは 'PREG_SPLIT_DELIM_CAPTURE'オプションを知らず、デリミタを捕捉しないので注意しなければなりません。 – kongo09

関連する問題