PHP预拆分数据


PHP preg_split Data

我有以下来自.txt文件的数据:

10
std 2798.zip
std 3048.zip
std 3075.zip
std 3123.zip
std 3152.zip
std 3168.zip
std 3171.zip
std 3188.zip
std 3201.zip
-- Clustering --
{{std A.P.1810.zip,std A.P.2221.zip,std 2798.zip,std A.P. 3284.zip,std A.P.2812.zip,std AP 2616.zip,std 3244.zip,std AP 2516.zip},{std 3123.zip,std 3075.zip,std 3270.zip,std 3225.zip,std 3188.zip,std 3203.zip,std 3201.zip,std 3048.zip,std 3168.zip,std AEM_3252.zip,std AP 2427.zip,std 3152.zip,std 3171.zip}}

如何使用preg_split将结果显示为:

Array[0] std 2798.zip
Array[1] std 3048.zip
Array[2] std 3075.zip etc...

同样在集群下

Array[0] {std A.P.1810.zip, std A.P.2221.zip,std 2798.zip etc..},
Array[1] etc....

我的代码是:

echo "ole";
    $string=shell_exec("java -jar plagiarism.jar");
echo $string;
$oparray = preg_split("#['r'n]+#", trim($string));
echo"<BR><BR>";
foreach ($oparray as $key)
{
    echo $key."   end'n";
    echo"<BR><BR>";
}
 ?>

根据操作系统的不同,行尾分隔符的值可能不同。通常有"换行"、"回车"answers"回车换行"。您需要使用其中任何一个进行拆分。

这是一个示例:

$string = <<<EOS
10
std 2798.zip
std 3048.zip
std 3075.zip
std 3123.zip
std 3152.zip
std 3168.zip
std 3171.zip
std 3188.zip
std 3201.zip
-- Clustering --
{{std A.P.1810.zip,std A.P.2221.zip,std 2798.zip,std A.P. 3284.zip,std A.P.2812.zip,std AP 2616.zip,std 3244.zip,std AP 2516.zip},{std 3123.zip,std 3075.zip,std 3270.zip,std 3225.zip,std 3188.zip,std 3203.zip,std 3201.zip,std 3048.zip,std 3168.zip,std AEM_3252.zip,std AP 2427.zip,std 3152.zip,std 3171.zip}}
EOS;
$parts  = preg_split("/'r'n|'n|'r/", $string);
// get only those elements which start with std or {{
$result = array_filter($parts, function($element) {
    if (preg_match('/^(std|{{)/', $element)) {
        return $element;
    }
});
var_dump($result);