특정 문자열 다음에 preg_match를 사용하여 패턴의 모든 연속 발생 찾기

카 심지

고유 한 테이블 ID를 가진 다른 테이블이있는 거대한 html 문서가 있습니다. 다음과 같은 것 :

<table class="my_table" id="table_id1">
  <tr class="odd"><td>Line 1</td></tr>
  <tr class="even"><td>Line 2</td></tr>
  <tr class="odd"><td>Line 3</td></tr>
  <tr class="even"><td>Line 4</td></tr>
</table>
<table class="my_table" id="table_id2">
  <tr class="odd"><td>Line 1</td></tr>
  <tr class="even"><td>Line 2</td></tr>
  <tr class="odd"><td>Line 3</td></tr>
</table>

preg_match를 사용하여 특정 테이블의 모든 행의 HTML을 찾을 수 있습니까?

다음 코드를 시도했습니다.

preg_match('/<table[^>]*id="table_id2">(<tr[^>]*><td>[^>]*<\/td><\/tr>)+/', $html, $matches); 
//$html variable contains the html.

그러나 다음과 같은 출력을 반환합니다.

Array
(
    [0] => Array
        (
            [0] => <table class="my_table" id="table_id2"><tr class="odd"><td>Line 1</td></tr><tr class="even"><td>Line 2</td></tr><tr class="odd"><td>Line 3</td></tr>
        )

    [1] => Array
        (
            [0] => <tr class="odd"><td>Line 3</td></tr>
        )

)

하지만 다음과 같은 출력이 필요합니다.

Array
(
    [0] => Array
        (
            [0] => <table class="my_table" id="table_id2"><tr class="odd"><td>Line 1</td></tr><tr class="even"><td>Line 2</td></tr><tr class="odd"><td>Line 3</td></tr>
        )

    [1] => Array
        (
            [0] => <tr class="odd"><td>Line 1</td></tr>
            [1] => <tr class="odd"><td>Line 2</td></tr>
            [2] => <tr class="odd"><td>Line 3</td></tr>
        )

)

가능합니까? 도와주세요.

Alma Do

HTML 구문 분석에 정규식을 사용해서는 안됩니다. PHP에는이를위한 훌륭한 도구 인 DOMDocument가 있습니다. 그것을 사용하면 정규식으로는 불가능하거나 거의 불가능한 많은 일을 할 수 있습니다. 샘플은 다음과 같습니다.

$sHtml = '<table class="my_table" id="table_id1">
  <tr class="odd"><td>Line 1</td></tr>
  <tr class="even"><td>Line 2</td></tr>
  <tr class="odd"><td>Line 3</td></tr>
  <tr class="even"><td>Line 4</td></tr>
</table>
<table class="my_table" id="table_id2">
  <tr class="odd"><td>Line 1</td></tr>
  <tr class="even"><td>Line 2</td></tr>
  <tr class="odd"><td>Line 3</td></tr>
</table>';

$rDoc   = new DOMDocument();
$rDoc->loadHTML($sHtml);
$sId    = 'table_id2';
//found table:
$rTable = $rDoc->getElementById($sId);
foreach($rTable->childNodes as $rItem)
{
   //do something with item:
   //var_dump($rItem);
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

preg_match 또는 preg_match_all 사이에있는 문자열의 모든 단어를 찾습니다.

분류에서Dev

R의 특정 문자 패턴 다음에 발생하는 구분 기호를 기반으로 다음 문자열 벡터를 어떻게 분할합니까?

분류에서Dev

특정 단어 패턴 뒤에 발생하지 않는 모든 콜론 문자를 바꿉니다.

분류에서Dev

특정 패턴과 일치하지만 연속 된 모든 경우에 대해 문자열 일치의 일부를 추출하고 팬더를 사용하여 쉼표로 구분하는 방법

분류에서Dev

정규식을 사용하여 사용자 텍스트 입력에서 특정 단어의 모든 발생 찾기

분류에서Dev

java를 사용하여 특정 패턴이 앞에 나오는 모든 문자열을 대체합니다.

분류에서Dev

PHP에서 preg_match를 사용하여 내 패턴 문자열로 다음 줄을 가져옵니다.

분류에서Dev

reqex를 사용하여 두 특정 문자 사이의 모든 발생을 연관된 문자 코드로 바꾸는 방법은 무엇입니까?

분류에서Dev

재귀를 사용하여 하위 문자열의 모든 발생을 다른 하위 문자열로 바꾸기

분류에서Dev

Python에서 특정 패턴의 모든 발생으로 데이터 프레임 열에서 문자열을 분할하는 방법

분류에서Dev

찾기 및 이름 바꾸기를 사용하여 반복적으로 모든 파일과 폴더에 사용자 정의 문자열을 추가합니다.

분류에서Dev

파이썬을 사용하여 연속 10 간격으로 문자열의 특정 문자를 찾으려고

분류에서Dev

javascript를 사용하여 문자열의 모든 발생을 문자로 바꿉니다.

분류에서Dev

sed : 모든 발생에 대해 두 개의 서로 다른 연속 일치 사이의 문자열 일치

분류에서Dev

배열 값에서 특정 문자의 발생 찾기

분류에서Dev

발견 된 문자열의 일부를 추출하기 위해 preg_match를 어떻게 사용합니까?

분류에서Dev

겹치는 지 여부에 관계없이 패턴의 모든 발생 찾기

분류에서Dev

bash 스크립트를 사용하여 다른 두 문자열 사이에 문자열이 발생하는 모든 인스턴스를 제거하십시오.

분류에서Dev

StringBuilder.indexOf ()를 사용하여 발생하는 문자열의 모든 위치 가져 오기

분류에서Dev

Python을 사용하여 문자열의 모든 특정 문자 바꾸기

분류에서Dev

문자열의 세 줄에 여섯 개 연속 정수를 찾기

분류에서Dev

정규식을 사용하여 문자열에서 구문의 세 번째 발생 찾기

분류에서Dev

특정 문자 다음에 문자열의 모든 문자를 삭제 하시겠습니까?

분류에서Dev

Notepad ++를 사용하여 위치 X의 모든 줄에서 특정 문자를 찾는 방법

분류에서Dev

preg_match를 사용하여 대괄호 사이의 모든 텍스트 찾기

분류에서Dev

Java-binarySearch를 사용하여 If없이 배열에서 특정 요소의 발생 횟수를 찾습니다.

분류에서Dev

파이썬에서 패턴 찾기를 기반으로 문자열에서 모든 발생을 가져옵니다.

분류에서Dev

파이썬에서 패턴 찾기를 기반으로 문자열에서 모든 발생을 가져옵니다.

분류에서Dev

Linq를 사용하여 메서드 구문을 사용하여 관련 테이블에서 특정 값이있는 테이블의 모든 레코드 찾기

Related 관련 기사

  1. 1

    preg_match 또는 preg_match_all 사이에있는 문자열의 모든 단어를 찾습니다.

  2. 2

    R의 특정 문자 패턴 다음에 발생하는 구분 기호를 기반으로 다음 문자열 벡터를 어떻게 분할합니까?

  3. 3

    특정 단어 패턴 뒤에 발생하지 않는 모든 콜론 문자를 바꿉니다.

  4. 4

    특정 패턴과 일치하지만 연속 된 모든 경우에 대해 문자열 일치의 일부를 추출하고 팬더를 사용하여 쉼표로 구분하는 방법

  5. 5

    정규식을 사용하여 사용자 텍스트 입력에서 특정 단어의 모든 발생 찾기

  6. 6

    java를 사용하여 특정 패턴이 앞에 나오는 모든 문자열을 대체합니다.

  7. 7

    PHP에서 preg_match를 사용하여 내 패턴 문자열로 다음 줄을 가져옵니다.

  8. 8

    reqex를 사용하여 두 특정 문자 사이의 모든 발생을 연관된 문자 코드로 바꾸는 방법은 무엇입니까?

  9. 9

    재귀를 사용하여 하위 문자열의 모든 발생을 다른 하위 문자열로 바꾸기

  10. 10

    Python에서 특정 패턴의 모든 발생으로 데이터 프레임 열에서 문자열을 분할하는 방법

  11. 11

    찾기 및 이름 바꾸기를 사용하여 반복적으로 모든 파일과 폴더에 사용자 정의 문자열을 추가합니다.

  12. 12

    파이썬을 사용하여 연속 10 간격으로 문자열의 특정 문자를 찾으려고

  13. 13

    javascript를 사용하여 문자열의 모든 발생을 문자로 바꿉니다.

  14. 14

    sed : 모든 발생에 대해 두 개의 서로 다른 연속 일치 사이의 문자열 일치

  15. 15

    배열 값에서 특정 문자의 발생 찾기

  16. 16

    발견 된 문자열의 일부를 추출하기 위해 preg_match를 어떻게 사용합니까?

  17. 17

    겹치는 지 여부에 관계없이 패턴의 모든 발생 찾기

  18. 18

    bash 스크립트를 사용하여 다른 두 문자열 사이에 문자열이 발생하는 모든 인스턴스를 제거하십시오.

  19. 19

    StringBuilder.indexOf ()를 사용하여 발생하는 문자열의 모든 위치 가져 오기

  20. 20

    Python을 사용하여 문자열의 모든 특정 문자 바꾸기

  21. 21

    문자열의 세 줄에 여섯 개 연속 정수를 찾기

  22. 22

    정규식을 사용하여 문자열에서 구문의 세 번째 발생 찾기

  23. 23

    특정 문자 다음에 문자열의 모든 문자를 삭제 하시겠습니까?

  24. 24

    Notepad ++를 사용하여 위치 X의 모든 줄에서 특정 문자를 찾는 방법

  25. 25

    preg_match를 사용하여 대괄호 사이의 모든 텍스트 찾기

  26. 26

    Java-binarySearch를 사용하여 If없이 배열에서 특정 요소의 발생 횟수를 찾습니다.

  27. 27

    파이썬에서 패턴 찾기를 기반으로 문자열에서 모든 발생을 가져옵니다.

  28. 28

    파이썬에서 패턴 찾기를 기반으로 문자열에서 모든 발생을 가져옵니다.

  29. 29

    Linq를 사용하여 메서드 구문을 사용하여 관련 테이블에서 특정 값이있는 테이블의 모든 레코드 찾기

뜨겁다태그

보관