首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用字母数字拆分字符串,用preg_split拆分句号

用字母数字拆分字符串,用preg_split拆分句号
EN

Stack Overflow用户
提问于 2016-07-23 02:59:49
回答 2查看 177关注 0票数 0

我试图使用像R401.4R402.3.4这样的分隔符使用以下代码拆分一个大字符串:

代码语言:javascript
复制
<?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 => R 401.2 4 =>要求。地基施工应能按照R301截面容纳所有荷载,并将由此产生的荷载传递给支护土。支持基础和基础的填土应按照公认的工程惯例进行设计、安装和测试。用作木料和预制混凝土地基的碎石填料应符合R403节的要求。 5 => R 401.3 6 =>引流。地面排水应转用于风暴、下水道、运输工具或其他不造成危险的其他认可收集点。地块应分级,以便将地表水从地基墙中抽走。该等级须在首10呎(3048毫米)内最少下降6吋(152毫米)。 例外情况:如地段线、墙壁、斜坡或其他物理屏障禁止在10呎(3048毫米)范围内落6吋(152毫米),则须建造排水渠或污水渠,以确保排水系统远离该构筑物。离建筑物基础10英尺(3048毫米)以内的不透水表面,应至少离建筑物2%的距离。 7 => R 401.4 8 =>土壤试验。

然而,当我在像regexer.com这样的正则表达式测试网站上尝试表达式时,它似乎是正确的。

http://regexr.com/3ds6l

我的regex有什么问题吗?还是与preg_match in php有关?

我正在寻找的是将我的数组格式化如下:

3 => R401.2要求。地基施工应能按照R301截面容纳所有荷载,并将由此产生的荷载传递给支护土。支持基础和基础的填土应按照公认的工程惯例进行设计、安装和测试。用作木料和预制混凝土地基的碎石填料应符合R403节的要求。 4 => R401.3引流。地面排水应转用于风暴、下水道、运输工具或其他不造成危险的其他认可收集点。地块应分级,以便将地表水从地基墙中抽走。该等级须在首10呎(3048毫米)内降至最少6吋(152毫米)。

注意:我知道使用DOM解析页面通常更好

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2016-07-23 03:22:30

使用前瞻性断言解决此问题,如在这里所做的:split while keeping delimiter at the start of array element

代码语言:javascript
复制
<?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);
?>
票数 0
EN

Stack Overflow用户

发布于 2017-08-31 16:17:52

因为您没有捕获任何内容,所以不需要使用PREG_SPLIT_DELIM_CAPTURE

以下是一个简化的版本:

代码语言:javascript
复制
$data=file_get_contents('http://codes.iccsafe.org/app/book/content/2015-I-Codes/2015%20IRC%20HTML/Chapter%204.html');
$split=preg_split('/(?=<b>R\d{3}\.\d)/',$data);
var_export($split);

(您提供的url不允许访问文本,因此我无法提供演示/输出。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38537707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档