1

テキストファイルに次のレコードがあり、そのレコードフォームテキストファイルを抽出し、それらを個別の配列変数として扱う必要があります

r1=(1,2,3)|r2=(4,5,6)|r3=(1,2,3,4,5,7)|rn=(9,6,7,8)パイプ(|)で区切られた

以下のように、配列として個別に使用することを表す必要があります

$r1= Array
(
[0] => 1
[1] => 2
[2] => 3
)

$r2=Array
(
[0] => 4
[1] => 5
[2] => 6
)

やり方がわからないのですが、phpでできますか?

4

6 に答える 6

1

文字列を分割するための単純な正規表現と、それに続く各グループの爆発:

if (preg_match_all('#(\w+)=\(([\d,]*)\)#', $s, $matches)) {
    foreach ($matches[2] as $i => $groups) {
        $group_name = $matches[1][$i];
        $$group_name = array_map('intval', explode(',', $groups));
    }
}

print_r($r1);
print_r($r3);
print_r($rn);
于 2012-05-21T07:06:17.927 に答える
0
$data = "r1=(1,2,3)|r2=(4,5,6)|r3=(1,2,3,4,5,7)|rn=(9,6,7,8)";

$arr = explode("|", $data);

$finArray = array();

foreach($arr as $key=>$value)
{
    $single = explode('(', $value);
    $finArray[] = explode(',', str_replace(')', '', $single[1]));
}

print_r($finArray);
于 2012-05-21T07:01:29.947 に答える
0

Evalを使用できます

//Assuming  you can pull the content from text file using fread

$temp = "r1=(1,2,3)|r2=(4,5,6)";
$temp=str_replace("=","=array",$temp);
$split=explode("|",$temp);
echo "<pre>";
foreach($split as $k=>$v){
      $v="$".$v.";";
      //Evaluate a string as PHP code .i.e You will get r1,r2 as a variable now which is array
      eval($v);
}

print_r($r1);
print_r($r2);
于 2012-05-21T07:02:10.117 に答える
0

このコードはあなたを助けます:-

  <?php
    $file = "/tmp/file1.txt"; // this is your file path
    $f = fopen($file, "r");
    while ( $line = fgets($f, 1000) ) {
    print $line;

    $a=explode('|',$line);
    print_r($a);  // I have explode based on | for you...

foreach($a as $key=>$value)
{
    print_r($value);
}

fclose($ file); }?>

""また""

$a="r1=(1,2,3)|r2=(4,5,6)|r3=(1,2,3,4,5,7)|rn=(9,6,7,8)";

$a=explode('|',$a);
print_r($a);
于 2012-05-21T07:03:16.060 に答える
0

次のように行うことができます:

$string="r1=(1,2,3)|r2=(4,5,6)|r3=(1,2,3,4,5,7)|rn=(9,6,7,8)";
$string=str_repla("r1=","",$string);
$yourArray=explode('|', $string);
于 2012-05-21T07:03:39.710 に答える
0
    <?php
$file = "file.txt";
$f = fopen($file, "r");
while ( $line = fgets($f, 1000) ) {
$str = $line;
}
$str1 = explode("|",$str);
foreach($str1 as $temp) {
    $str2 = explode("=",$temp);
    $data[$str2[0]] = explode(",",trim($str2[1],"()"));
}
echo '<pre>';
print_r($data);
echo '</pre>';
?>

これはあなたの仕事をします。

于 2012-05-21T07:34:19.853 に答える