0

テキストから特定のデータを抽出するために必要なコードを書くのに問題があります。私のテキストは、次の行に沿って構成されています。

[class name]. [class name]. (class units). [class description]. [class instructors]

例えば:

200A-200B。民事訴訟。(3) コードシステムおよび連邦規則に基づく訴答の原則。裁判地、手続き、陪審員、証拠の十分性、指示、評決、新しい裁判、判決を含む現代の裁判慣行。上告手続き。Aldaveさん、Louisellさん、Pocheさん、Stolzさん、Vetterさん

201A-201B。契約。(4) 契約の成立、運用、終了の問題を扱う契約法。アイゼンバーグ氏、ケスラー氏、ラウベ氏、ワイントラウブ氏

そして、リストは続き、これらはさらに1000以上あります.

これらのリストのさまざまな部分を分解して、それぞれのリストに入れたいと思います。たとえば、リスト内のすべてのクラス番号、リスト内のすべてのクラス名、リスト内のすべてのユニット、リスト内のすべてのクラスの説明、およびリスト内のすべてのインストラクターが必要です。

どうすればこれを手に入れることができますか?PHPでコーディングを始めたばかりですが、推奨される読み方はありますか? ありがとうございました。

4

2 に答える 2

1

これはあなたのニーズに合っていますか?(セパレータとしてドットを使用せず、代わりに # を使用します)

$strings = array();

$class_codes = array();
$class_names = array();
$class_units = array();
$class_descriptions = array();
$class_teachers = array();

$strings[] = "200A-200B#Civil Procedure#(3)#The principles of pleading under the code system and the federal rules; modern trial practice, including venue, process, the jury, sufficiency of evidence, instructions, verdicts, new trials, judgments; appellate procedure.#Ms. Aldave, Mr. Louisell, Mr. Poche, Mr. Stolz, Mr. Vetter";
$strings[] = "201A-201B#Contracts#(4)#The law of contracts, dealing with the problems of formation, operation, and termination.#Mr. Eisenberg, Mr. Kessler, Mr. Laube, Mr. Weintraub";

$total = count($strings);

for($i=0; $i<$total; $i++)
{
    $string_parts = explode("#", $strings[$i]);

    $class_codes[] = $string_parts[0];
    $class_names[] = $string_parts[1];
    $class_units[] = $string_parts[2];
    $class_descriptions[] = $string_parts[3];
    $class_teachers[] = $string_parts[4];
}

echo "<pre>";
print_r($class_codes);
echo "</pre>";
于 2013-03-01T01:34:08.560 に答える
0

ファイルの各行をループし、各行に正規表現を適用して取得できます

//I am just constructing $lines array assuming you have all lines of the file 

$lines[0] = "200A-200B. Civil Procedure. (3) The principles of pleading under the code system and the federal rules;
modern trial practice, including venue, process, the jury, sufficiency of evidence, instructions, verdicts, new trials, judgments; appellate procedure. Ms. Aldave, Mr. Louisell, Mr. Poche, Mr. Stolz, Mr. Vetter";
$lines[1] = "201A-201B. Contracts. (4) The law of contracts, dealing with the prob¬lems of formation, operation, and termination. Mr. Eisenberg, Mr. Kessler, Mr. Laube, Mr. Weintraub";

$regex = '/(.*)\.\s*(.*)\.\s*\(([1-9]+)\)\s*([^\..]*)\.\s*(.*)\s*$/';
$data = array();
foreach($lines as $line)
{
    preg_match($regex, $line, $matches);
    if(isset($matches[1]) &&
       isset($matches[2]) &&
       isset($matches[3]) &&
       isset($matches[4]) &&
       isset($matches[5])
    )
    $data[] = array("class_code" => $matches[1],
                "class_name" => $matches[2],
                "class_unit" => $matches[3],
                "class_description" => $matches[4],
                "class_instructors" => $matches[5]
            );

}

上記の$data変数を var_dump すると、次の出力が得られます。

array
  0 => 
    array
      'class_code' => string '200A-200B' (length=9)
      'class_name' => string 'Civil Procedure' (length=15)
      'class_unit' => string '3' (length=1)
      'class_description' => string 'The principles of pleading under the code system and the federal rules;
modern trial practice, including venue, process, the jury, sufficiency of evidence, instructions, verdicts, new trials, judgments; appellate procedure' (length=222)
      'class_instructors' => string 'Ms. Aldave, Mr. Louisell, Mr. Poche, Mr. Stolz, Mr. Vetter' (length=58)
  1 => 
    array
      'class_code' => string '201A-201B' (length=9)
      'class_name' => string 'Contracts' (length=9)
      'class_unit' => string '4' (length=1)
      'class_description' => string 'The law of contracts, dealing with the prob¬lems of formation, operation, and termination' (length=90)
      'class_instructors' => string 'Mr. Eisenberg, Mr. Kessler, Mr. Laube, Mr. Weintraub' (length=52)

それがあなたが探しているものであることを願っています..

于 2013-03-01T02:00:14.623 に答える