【发布时间】:2016-11-27 00:31:54
【问题描述】:
我正在尝试使用 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 毫米)内。
例外:地段线、墙壁、斜坡或其他物理障碍 禁止在 10 英尺 (3048 毫米)、排水管或 洼地的建造应确保排水远离 结构体。 10 英尺(3048 毫米)范围内的不透水表面 建筑地基应至少倾斜 2% 建筑物。
[7] => R401.4 [8] => 土壤测试。
但是,当我在像 regexer.com 这样的正则表达式测试网站上尝试我的表达式时,它似乎可以正常工作。
我的regex 有问题还是与php 中的preg_match 有关?
我正在寻找的是我的数组格式如下:
[3] => R401.2 要求。基础结构应能够根据第 R301 节和 将产生的荷载传递给支撑土壤。填土 应设计、安装和安装支撑基础和基础 根据公认的工程实践进行测试。砾石填充 用作木材和预制混凝土基础的基础 遵守第 R403 节。
[4] => R401.3 排水。地表排水应改道 雨水渠运输工具或其他经批准的收集点 不会造成危险。地段应分级以排放地表水 远离基础墙。等级应至少下降 6 英寸 (152 毫米)在前 10 英尺(3048 毫米)内。
注意:我知道使用 DOM 解析页面通常会更好
谢谢。
【问题讨论】:
-
搜索
PREG_SPLIT_DELIM_CAPTURE(并使用DOM)
标签: php regex preg-split