1

これは私の最初の投稿です。複数のソースからの日誌エントリを含むテキスト (.txt) ファイルがあります。エントリを日付、著者、タイトルなどで整理したいと考えています。各エントリは「---」で区切られています。「|」の後に各日付を指定します。括弧内は各著者。タイトルは、エントリの先頭にある括弧の前に来ます。

したがって、典型的なエントリは次のようになります。

Title (Author) - Citation | Date Added

Entry
---

これまでの私のコードは次のとおりです。

$text = file_get_contents('./uploads/My Clippings.txt');

$entries = explode("==========",$text);

$count = count($entries);
echo "<h3>You have $count entries on your Kindle!</h3><br />";

foreach ($entries as $entry) {
echo $entry . "<br /><br />";
}

これで、「---」区切り文字で区切られたエントリの配列ができました。次に、配列内の各文字列を著者、タイトルなどで分割したいと思います...

問題は、preg 関数は配列にのみ適用可能であり、各配列要素が文字列の場合は機能しないことです。

この問題にアプローチするにはいくつかの方法があることを知っていますが、私の場合に機能する方法が見つからないようです。

4

2 に答える 2

2

もしかしてこれ?

<?php
    $string = 'Dune 2000 (Frank Herbert) - Some Citation | 2011-05-25';
    $pattern = '/(.*) \((.*)\) \- (.*) \| (.*)/';
    preg_match($pattern, $string, $matches);

    print_r($matches);
?>

出力:

Array
(
    [0] => Dune 2000 (Frank Herbert) - Some Citation | 2011-05-25
    [1] => Dune 2000
    [2] => Frank Herbert
    [3] => Some Citation
    [4] => 2011-05-25
)
于 2011-05-26T17:40:10.733 に答える
0

このようなエントリごとに、次のようにしTitle (Author) - Citation | Date Addedます。

  • 下線がスペースである場所の最初の出現を見つけ、_(タイトルは0からそのインデックスまでの部分文字列です
  • 検索()インデックス、およびそれらのインデックスを持つ部分文字列が作成者です
  • -_下線がスペースであるとのインデックスを見つけ、_|それらのインデックスを持つ部分文字列があなたの引用です
  • 下線がスペースであるインデックスを見つけ、|_そのインデックスから最後の文字までの部分文字列があなたの日付になります
于 2011-05-26T17:23:59.257 に答える