>  기사  >  백엔드 개발  >  정규식 - PHP 정규 일치 패턴을 해결하시겠습니까?

정규식 - PHP 정규 일치 패턴을 해결하시겠습니까?

WBOY
WBOY원래의
2016-08-04 09:19:251272검색

cURL을 사용하여 데이터 테이블이 있는 페이지를 가져옵니다. TR 아래의 모든 셀을 가져오는 한 다음 방법을 사용하세요

<code>$content = 内容;
preg_match_all('/<td>(.*?)<\/td>/',$content,$res);</code>

하지만 일치하지 않는 두 가지 상황이 있습니다

<code><td>
            
                内容
                
            
        </td></code>

<code><td class="sorting_1">
            未付
            
            
            
            
            
            
            
            
            
        </td></code>

여백이 많은 셀과 클래스가 있는 셀은 왜 매칭이 안되는지 모르겠네요? 정규화하는 방법을 모르기 때문에 TD와 완전히 일치할 수 있는 패턴을 찾아야 합니다.
또 다른 질문이 있습니다. 하나는 다양한 조건에서 데이터를 필터링하는 데 사용되며 다른 하나는 데이터가 들어 있는 테이블만 일치시키는 데 사용됩니다.

답글 내용:

cURL을 사용하여 데이터 테이블이 있는 페이지를 가져옵니다. TR 아래의 모든 셀을 가져오는 한 다음 방법을 사용하세요

<code>$content = 内容;
preg_match_all('/<td>(.*?)<\/td>/',$content,$res);</code>

하지만 일치하지 않는 두 가지 상황이 있습니다

<code><td>
            
                内容
                
            
        </td></code>

<code><td class="sorting_1">
            未付
            
            
            
            
            
            
            
            
            
        </td></code>

여백이 많은 셀과 클래스가 있는 셀은 왜 매칭이 안되는지 모르겠네요? 정규화하는 방법을 모르기 때문에 TD와 완전히 일치할 수 있는 패턴을 찾아야 합니다.
또 다른 질문이 있습니다. 하나는 다양한 조건에서 데이터를 필터링하는 데 사용되며 다른 하나는 데이터가 들어 있는 테이블만 일치시키는 데 사용됩니다.

한 줄 모드에서는 줄바꿈을 일치시킬 수 없습니다.

을 사용할 수 있습니다.
<code>\s
匹配任意的空白符
\S
匹配任意不是空白符的字符</code>

하나의 예에서 추론을 이끌어내고 td를 클래스와 일치시킵니다

<code>/<td[\s\S]*?>([\s\S]+?)<\/td>/</code>

테이블 중 하나를 일치시키기 위해 하나의 예에서 추론을 도출할 수도 있습니다. 먼저 모든 내용의 테이블을 배열로 일치시킵니다.

<code>/<table[\s\S]*?>([\s\S]+?)<\/table>/</code>

그럼 원하는 숫자에 따라 다르며, 위의 일반 매칭 숫자를 사용하세요.

앞서 말했듯이 한 가지 예를 통해 추론해 보세요!

<code>$pattern = "/<td.*?>([\s\S]*?)<\/td>/";</code>

저도 잘 못하는데 할 수 있을 것 같아요

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.