2014-12-11 4 views
0

Regex 또는 다른 PHP 함수를 사용하여 모든 html 텍스트를 PHP 배열로 추출하는 방법이 있습니까?
예 1 :PHP 배열에 HTML 텍스트 내용 추출

예를 들어, I 코드의 조각이

<div class="user" ><?= $username ?></div> 
<table> 
    <tr> 
     <td>Cell 1</td> 
     <td>Cell 2</td> 
    </tr> 
</table> 
<span>Lorem ipsum <b>dolor</b> sit amet</span> 
Lorem ipsum dolor sit amet <a href="www.example.com">Lorem</a> 
Dolor site amet at date <?php echo date('Y-m-d'); ?> example 

및 I 폼에 삽입 할 수있는 방법이 필요하다는 것이다 출력이 같은 배열 :

Array(
    [0] => "Cell 1" 
    [1] => "Cell 2" 
    [2] => "Lorem ipsum <b>dolor</b> sit amet" 
    [3] => "Lorem ipsum dolor sit amet " 
    [4] => "Lorem" 
    [5] => "Dolor site amet at date " 
    [6] => " example" 
) 

하지만 텍스트 장식 태그의 예외는 <u> <b> <i>과 같습니다.

위에서 언급 한 예외와 함께 strip_tags을 사용해 보았지만 일관성이없고 종종 나머지를 무시하는 첫 번째 문자열 만 반환합니다.


UPDATE
이 정규식 (?<=>)\s*(?=<)|(?<=>)\n*([^<]+) 거의이다 내가 요청 무엇, 그것은 탈출시키는 것을 몇 발생이 있습니다.

<script type="text/javascript"> 
    tipoProd = 'Squares'; 
</script> 

반환 : 그것이 반환 script 태그를 발견하면

원하든 그들 사이에

<div class="content section" style="padding: 40px 0px; display: <?= $dev?'none':'block'?>; text-align:center" id="selectOptions"> 

Retunrs 모든 후 :

tipoProd = 'Squares'; 

을 그리고 아래의 라인을 발견하면 PHP 닫기 태그 :

; text-align:center" id="selectOptions"> 

어떻게 이것을 정규식에 추가 할 수 있습니까?

+1

사용'DomDocument' 또는'간단한 PHP DOM Parser'. – Barmar

+0

@Barmar : 단순 HTML DOM을 의미합니까? 내가 괴물 같은 이유로 DOM 확장을 사용할 수 없다면 추천하지 않을 것이다. 'DomDocument'와 아마'DomXPath'가 더할 나위없이 좋은 방법입니다. – cHao

답변

1
(?<=>)\s*(?=<)|(?<=>)\n*([^<]+) 

시도해보십시오. 데모를보십시오.

https://regex101.com/r/qB0jV1/6

$re = ""(?<=>)\\s*(?=<)|(?<=>)\\n*([^<]+)"i"; 
$str = "<div class=\"user\" ><?= \$username ?></div>\n<table>\n <tr>\n <td>Cell 1</td>\n <td>Cell 2</td>\n </tr>\n</table>\n<span>Lorem ipsum <b>dolor</b> sit amet</span>\nLorem ipsum dolor sit amet <a href=\"www.example.com\">Lorem</a>\nDolor site amet at date <?php echo date('Y-m-d'); ?> example"; 

preg_match_all($re, $str, $matches); 
+0

@vks에 감사드립니다. 거의 다되었지만 탈출 할 수있는 몇 가지 사건이 있습니다. 질문을 업데이트했습니다 – CIRCLE

+0

@CIRCLE https://regex101.com/r/qB0jV1/7 ???????? – vks