У меня довольно большой и очень грязный файл данных, из которого я хочу фильтровать полезные данные. Его структура выглядит примерно так:
!bla bla
more bla
some useless data
something interesting
something interesting
something interesting
some useless data
something interesting
something interesting
some useless data
bla bla
Мой план состоял в том, чтобы прочитать файл с file_get_contents()
, а затем использовать str_replace()
чтобы заменить некоторые данные и использовать их в качестве маркеров. Затем я попытался удалить бесполезные данные с начала файла на marker1
, затем с marker2
на marker3
, затем с marker4
до конца файла, чтобы я получил только полезные данные на выходе (в этот момент я Я еще не уверен, что мне нужны или не нужны маркеры в данных. Я попытался использовать strstr()
но не смог заставить его работать.
!bla bla
more bla
some useless data
==marker1==
something interesting
something interesting
something interesting
==marker2==
some useless data
==marker3==
something interesting
something interesting
==marker4==
some useless data
bla bla
Я буду использовать explode()
чтобы передать полученные полезные данные в мою базу данных.
EDIT: Ну, я решил это так.
preg_match('/(==marker1==)(.*?)(==marker2==)/s', $input, $marker1to2);
$marker1to2 = trim($marker1to2[2]);
$marker1to2 = preg_replace('/something /', '==marker1== something ', $marker1to2, 1);
echo $marker1to2;
Вам нужны регулярные выражения:
$data = "!bla bla
more bla
some useless data
==marker1==
something interesting
something interesting
something interesting
==marker2==
some useless data
==marker3==
something interesting
something interesting
==marker4==
some useless data
bla bla";
preg_match("/(==marker1==)(.*)(==marker2==)/s", $data, $marker1to2);
$marker1to2 = trim($marker1to2[2]);
preg_match("/(==marker3==)(.*)(==marker4==)/s", $data, $marker3to4);
$marker3to4 = trim($marker3to4[2]);
echo "Marker 1 to 2:\n$marker1to2\n\n";
echo "Marker 3 to 4:\n$marker3to4\n\n";
Вывод:
Marker 1 to 2: something interesting something interesting something interesting Marker 3 to 4: something interesting something interesting