如何在没有占位符标记的情况下将下面的内容拆分为单独的文件。我还想将文本放在占位符标记内,并将它们放在新的内容文件中。
<div class='placeholder'>The First Chapter</div>
This is some text.
<div class='placeholder'>The Second Chapter</div>
This is some more text.
<div class='placeholder'>Last Chapter</div>
The last chapter.
感谢。
更新:
我已尝试过MartinodF代码的修改版本,但无法使其正常工作。
$text=file_get_contents("t.txt");
$parts = preg_split('/\n?<div class=\'placeholder\'>(.+?)<\/div>\n/im', $text, -1, PREG_SPLIT_DELIM_CAPTURE);
$parts_num = count($parts) / 2;
$titles = $files = array();
for($x = 0; $x < $parts_num - 1; $x++) {
$titles[] = $parts[$x * 2 + 1];
$files[] = $parts[$x * 2 + 1] . "\n" . $parts[$x * 2 + 2];
}
var_dump($titles);
var_dump($files);
echo $titles[1];
更新2:不再依赖于单独的txt文件,但仍无效。
$text="<div class='placeholder'>The First Chapter</div>
This is some text.
<div class='placeholder'>The Second Chapter</div>
This is some more text.
<div class='placeholder'>Last Chapter</div>
The last chapter.
";
$parts = preg_split('/\n?<div class=\'placeholder\'>(.+?)<\/div>\n/im', $text, -1, PREG_SPLIT_DELIM_CAPTURE);
$parts_num = count($parts) / 2;
$titles = $files = array();
for($x = 0; $x < $parts_num - 1; $x++) {
$titles[] = $parts[$x * 2 + 1];
$files[] = $parts[$x * 2 + 1] . "\n" . $parts[$x * 2 + 2];
}
var_dump($titles);
var_dump($files);
echo $titles[1];
答案 0 :(得分:2)
使用Xml / HTML解析器遍历dom并提取所需内容。 Theres SimpleXml和DOMDocment直接进入php。或者您可以使用Zend_Dom_Query或SimpleHTML之类的东西。
答案 1 :(得分:0)
在我看来,你可以简单地使用正则表达式......
http://www.roscripts.com/PHP_regular_expressions_examples-136.html - 请参阅文档末尾有一些HTML正则表达式。
...但也许你只提出了部分任务。
答案 2 :(得分:0)
如果我理解你正在做什么(比如从某种脚本中提取每章的标题和内容),MartyIX是对的,你可以使用正则表达式:
$parts = preg_split('/\n?<div class=\'placeholder\'>(.+?)<\/div>\n/im', $text, -1, PREG_SPLIT_DELIM_CAPTURE);
$parts_num = count($parts) / 2;
$titles = $files = array();
for($x = 0; $x < $parts_num - 1; $x++) {
$titles[] = $parts[$x * 2 + 1];
$files[] = $parts[$x * 2 + 1] . "\n" . $parts[$x * 2 + 2];
}
var_dump($titles);
var_dump($files);
$ titles将是一个包含所有“标题”的数组,你可以在每一行写一个并拥有你的“内容”文件(就像索引一样)。
另一方面,$ files将包含每个章节(标题,没有标签,新行,然后是文本),您可以将每个章节写入不同的文件,以便将文本拆分为章节。