Как извлечь контент из разделителей в php

Я ищу, чтобы извлечь содержимое в 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 />'; } } ?>