在分隔符之间提取文本 - PHP

时间:2011-05-26 17:14:33

标签: php arrays delimiter text-extraction

这是我的第一篇文章。我有一个文本(.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函数只适用于数组,如果每个数组元素都是一个字符串,这将不起作用。

我知道有几种方法可以解决这个问题我似乎无法找到适用于我的情况。

2 个答案:

答案 0 :(得分: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
)

答案 1 :(得分:0)

对于每个类似Title (Author) - Citation | Date Added的条目,您会:

  • 找到_(的第一个出现,其中下划线是一个空格,然后你的标题是从0到该索引的子字符串
  • 找到()索引,带有这些索引的子字符串是您的作者
  • 找到-__|的索引,其中下划线是空格,带有这些索引的子字符串是您的引文
  • 找到|_的索引,其中下划线是一个空格,从该索引到最后一个字符的子字符串将是您的日期