Я пытаюсь разбить большую строку, используя разделитель, например R401.4
или R402.3.4
, используя приведенный ниже код:
<?php
$chapter = "http://codes.iccsafe.org/app/book/content/2015-I-Codes/2015%20IRC%20HTML/Chapter%204.html";
$data = file_get_contents($chapter);
$split = preg_split('/(<b>[R]\d{3}[.][0-9])/' , $data, -1, PREG_SPLIT_DELIM_CAPTURE);
print_r($split);
?>
Когда я запускаю это в PHP, я получаю неправильное разделение, как показано ниже, где я получаю разделение там, где хочу, и после него, а не только в каждом разделе R401.
:
[3] => R401.2 [4] => Требования. Конструкция фундамента должна быть способна воспринимать все нагрузки в соответствии с разделом R301 и передавать результирующие нагрузки на поддерживающий грунт. Насыпные грунты, поддерживающие фундаменты и фундаменты, должны быть спроектированы, установлены и испытаны в соответствии с принятой инженерной практикой. Гравийная засыпка, используемая в качестве оснований для деревянных и сборных железобетонных фундаментов, должна соответствовать Разделу R403.
[5] => R401.3 [6] => Дренаж. Поверхностные стоки должны быть отведены в ливневую канализацию или другое утвержденное место сбора, не создающее опасности. Участки должны быть выровнены для отвода поверхностных вод от стен фундамента. Уклон должен падать минимум на 6 дюймов (152 мм) в пределах первых 10 футов (3048 мм).
Исключение: там, где границы участка, стены, склоны или другие физические барьеры препятствуют падению с высоты 6 дюймов (152 мм) в пределах 10 футов (3048 мм), должны быть устроены водостоки или канавы для обеспечения стока от конструкции. Непроницаемые поверхности в пределах 10 футов (3048 мм) от фундамента здания должны иметь уклон не менее 2 процентов от здания.
[7] => R401.4 [8] => Испытания почвы.
Однако, когда я пробую свое выражение на веб-сайте тестирования регулярных выражений, таком как regexer.com
, оно работает правильно.
Что-то не так с моим regex
или это как-то связано с preg_match
в php
?
Я ищу, чтобы мой массив был отформатирован следующим образом:
[3] => Требования R401.2. Конструкция фундамента должна быть способна воспринимать все нагрузки в соответствии с разделом R301 и передавать результирующие нагрузки на поддерживающий грунт. Насыпные грунты, поддерживающие фундаменты и фундаменты, должны быть спроектированы, установлены и испытаны в соответствии с принятой инженерной практикой. Гравийная засыпка, используемая в качестве оснований для деревянных и сборных железобетонных фундаментов, должна соответствовать Разделу R403.
[4] => R401.3 Дренаж. Поверхностные стоки должны быть отведены в ливневую канализацию или другое утвержденное место сбора, не создающее опасности. Участки должны быть выровнены для отвода поверхностных вод от стен фундамента. Уклон должен падать минимум на 6 дюймов (152 мм) в пределах первых 10 футов (3048 мм).
Примечание. Я знаю, что обычно лучше анализировать страницы с помощью DOM
Спасибо.
PREG_SPLIT_DELIM_CAPTURE
(и используйте DOM) - person Casimir et Hippolyte   schedule 23.07.2016