Можно ли разделить содержимое файла с помощью пользовательского шаблона? - PullRequest
2 голосов
/ 22 апреля 2009

Можно ли разбить содержимое файла на части, имеющие определенный шаблон?

Вот чего я хочу достичь:

  • Прочитать файл, используя file_get_contents
  • Только для чтения содержимое между подобными закомментированными областями.

Я не уверен, насколько это сложно, но в основном, если я анализирую большой HTML-файл и хочу только отобразить в браузере определенные виджеты (шаблон - это границы комментариев), например:

Пример:

<html>
<head>
   <title>test</title>
</head>
<body>
 this content should not be parsed.. ignored
 <!-- widget -->
 this is the widget. i want to parse this content only from the file
 <!-- widget -->
</body>
</html>

Возможно ли использовать php и regex или что-либо еще для анализа содержимого только между границами?

Я прошу прощения, но я пытался объяснить, чего я хочу достичь как можно больше. надеюсь, кто-нибудь мне поможет.

Ответы [ 3 ]

6 голосов
/ 22 апреля 2009

Это, конечно, возможно, но на самом деле это не нужно делать с помощью регулярных выражений. Я бы, наверное, просто сделал что-то вроде этого:

$file = file_get_contents('http://example.com/');
$widgets = explode('<!-- widget -->', $file);

Теперь нечетные элементы $widget ([1], [3], [5] и т. Д.) Содержат то, что было между этими границами.

1 голос
/ 22 апреля 2009
$pattern = "/<!-- widget -->([\s\S]+)<!-- widget -->/";
$match = preg_match_all($pattern,$string,$match_array);

var_dump($match_array);
1 голос
/ 22 апреля 2009

Вы можете достичь того, что хотите, с помощью регулярного выражения (или, если вы только когда-либо делитесь на него, вы можете просто использовать это). Проверьте документацию. Другой ответ с использованием explode (), вероятно, также будет работать.

$text = file_get_contents('/path/to/your/file');
$array = split('<!-- widget -->', $text);

Первая запись будет всем до первого вхождения <!-- widget -->, а последний элемент будет всем после последнего <!-- widget -->. Каждый элемент с нечетным номером будет тем, что вы ищете.

Документация по разделенным функциям Php

...