Файл разделения с PHP и генерирует содержание

Как я разделяю содержание ниже на отдельные файлы без тегов заполнителя. Я также хотел бы взять текст в тегах заполнителя и разместить их в новом файле содержания.

<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];
1
задан usertest 10 May 2010 в 19:23
поделиться

3 ответа

Если я правильно понимаю, что вы делаете (например, извлекаете заголовки и содержимое каждой главы из какого-либо сценария), 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);

$ title будет массивом, содержащим все «заголовки», вы можете написать по одному в каждой строке и иметь свой файл «содержимого» (который будет похож на индекс).

$ files, с другой стороны, будут содержать каждую главу (заголовок без тега вокруг него, новую строку, а затем текст), которые вы можете записать в отдельный файл, чтобы ваш текст разбился на главы.

0
ответ дан 3 September 2019 в 00:42
поделиться

Используйте Xml/HTML парсер, чтобы пройтись по домену и вытащить то, что вам нужно. Есть SimpleXml и DOMDocment, встроенные прямо в php. Или вы можете использовать что-то вроде Zend_Dom_Query или SimpleHTML.

2
ответ дан 3 September 2019 в 00:42
поделиться

Мне кажется, что можно просто использовать регулярные выражения...

http://www.roscripts.com/PHP_regular_expressions_examples-136.html -- см. конец документа там есть несколько регулярных выражений для HTML.

... но, возможно, вы представили только часть своей задачи.

0
ответ дан 3 September 2019 в 00:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: