2016-07-23 3 views
0

나는 아래의 코드를 사용하여 R401.4 또는 R402.3.4 같은 구분 기호를 사용하여 큰 문자열을 분할하려고 : 나는 PHP에서 이것을 실행하면분할 preg_split와 문자 번호와은 마침표와 문자열

<?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); 
?> 

을 내가 잘못된 얻을 내가 원하는 분할을 얻고 경우, 아래와 같이 분할 후 그것보다는 각 R401. 섹션에서 :

[3] => R401.2 [4] => 요구 사항. 기초 공사는 결과로 발생하는 하중을지지 토양에 전달하는 R301 및 절에 따라 모든 하중을 수용 할 수 있어야한다. 토양을 채우는 기초 및 토대를 설계하고 설치하고 을 수락 한 공법에 따라 시험 한 토양 채우기 . 자갈 채우기 은 목재 및 프리 캐스트 콘크리트 기초 용 기초로 사용되며 은 R403 항을 준수합니다.

[5] => R401.3 [6] => 배수. 배수로는 빗물 하수도 운반선 또는 기타 승인 된 수집 지점으로 우회하여 위험을 초래하지 않아야합니다. 많은 양을 채취하여 표면 수를 에서 바닥 벽으로 배출하십시오. 등급은 처음 10 피트 (3048 mm) 내에서 최소 6 인치 (152 mm)으로 떨어집니다.

예외 : 많은 라인 벽 경사면 또는 10 피트 (3,048mm), 드레인 또는 습지대 내에 포함 6 인치 (152mm)를 금지 다른 물리적 장벽 멀리 구조로부터 배출을 보장하도록 구성되어야한다 . 건물 기반 건물의 10 피트 (3048 mm) 이내의 불 투과성 표면은 건물 에서 최소 2 퍼센트 기울어 져 있어야합니다.

[7] => R401.4 [8] => 토양 테스트. 내가 regexer.com 같은 정규 표현식 테스트 웹 사이트에 내 표현을하려고 할 때

그러나 올바르게 작동하는 것 같다.

http://regexr.com/3ds6l

뭔가 잘못 내 regex 거기 아니면이 phppreg_match 함께 할 수있는 뭔가가 무엇입니까?

[3] => R401.2 요구 사항 : 내 배열과 같은 포맷을 위해 내가 무엇을 찾고

이다. 기초 공사는 결과로 발생하는 하중을지지 토양에 전달하는 R301 및 절에 따라 모든 하중을 수용 할 수 있어야한다. 토양을 채우는 기초 및 토대를 설계하고 설치하고 을 수락 한 공법에 따라 시험 한 토양 채우기 . 자갈 채우기 은 목재 및 프리 캐스트 콘크리트 기초 용 기초로 사용되며 은 R403 항을 준수합니다.

[4] => R401.3 배수. 배수로는 빗물 하수도 운반선 또는 기타 승인 된 수집 지점으로 우회하여 위험을 초래하지 않아야합니다. 많은 양을 채취하여 표면 수를 에서 바닥 벽으로 배출하십시오.등급은 처음 10 피트 (3048 mm) 내에서 최소 6 인치 (152 mm)으로 떨어집니다.

참고 : 내가 아는 그 일반적으로 더 나은 DOM

감사를 사용하여 페이지를 구문 분석합니다.

+0

검색 : 여기

는 단순화 된 버전입니다 * (DOM을 사용) * –

답변

0

해결이 여기에 수행으로 내다 주장을 사용 : 당신은 아무것도 포착되지 않기 때문에, 당신이 사용 PREG_SPLIT_DELIM_CAPTURE 필요하지 않습니다 PHP preg_split while keeping delimiter at the start of array element

<?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

. PREG_SPLIT_DELIM_CAPTURE``에 대한

$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이 텍스트에 대한 액세스를 허용하지 않았다, 그래서 데모/출력을 제공 할 수 없습니다)