Я ищу, чтобы извлечь содержимое в php из разделителей. Например :
content useless <---------> Content to get content to get content to get <---------> content useles content useless <---------> Content to get content to get content to get <---------> content useless <---------> Content to get content to get content to get <--------->
Пока у меня только это:
<?php $myfile = file_get_contents("foo.txt"); $rows = explode("\n", $myfile); foreach($row as $line => $data) { if ($data == "<--------->") { } } ?>
Я не знаю, как найти вторую позицию моего разделителя и получить контент.
Надеюсь, я поняла! Приветствия и благодарности.
Это позволит получить содержимое всех блоков между <——–> как разделитель
$pattern = '/<-{9}>([\S\s]*?)<-{9}>/'; $subject = " <---------> Content to get content to get content to get <---------> Some extra stuff <---------> Content to get content to get content to get <--------->"; $matches = array(); preg_match_all($pattern, $subject, $matches); $allBlocks = $matches[1]; foreach($allBlocks as $block) { var_dump(explode("\n", $block)); }
Тем не менее, вы должны стараться быть более структурированными в определении разделителей.
Поскольку начало вашего контента совпадает с концом контента. <--------->
вы можете быть в затруднениях позже, когда масштабируете свой код, или если содержимое также содержит <--------->
Попробуйте реализовать некоторые теги XML, например </-------->
Или пользовательскую форму.
## BOU ## Материал \ n материал ## EOU ##
AS BOU / EOU – это начало / конец полезного материала
Вы можете использовать регулярное выражение.
<?php $g = file_get_contents("foo.txt"); preg_match('#\<---------\>\r\n(.*?)\r\n\<---------\>#s',$g,$matches); print_r($matches[1]); ?>
даст результат:
Content to get content to get content to get
<?php // $sections will be an array with elements that contains rows between <----> $sections = explode(PHP_EOL.'<--------->'.PHP_EOL, file_get_contents("foo.txt")); ?>
Теперь вы можете итератировать по разделам и снова взорваться PHP_EOL, тогда вы получите массив, где каждый элемент представляет собой строку файла.
Вы можете изменить PHP_EOL для «\ r» или «\ n», если вам это нужно.
редактировать:
<?php $sections = explode(PHP_EOL.'<--------->'.PHP_EOL, file_get_contents("foo.txt")); // each section contains file content between <---------> and next <---------> (additionaly start of file when it does not starts with <---------> foreach ($sections as $section){ $rows = explode(PHP_EOL, $section); foreach($rows as $row){ // display section row echo $row.'<br />'; } } ?>