>  기사  >  백엔드 개발  >  PHP의 preg_match_all()이 지정된 문자열과 일치할 수 없습니까?

PHP의 preg_match_all()이 지정된 문자열과 일치할 수 없습니까?

WBOY
WBOY원래의
2016-09-29 09:33:001568검색

데모:

<code>$html='<div class="p-img"><a href="url"></a></div><div class="p-img"><img src="xx"></div>';

preg_match_all('/<div class="p-img">(.*?)<\/div>/', $html, $out);

var_dump($out);
</code>

대상 문자열 $html,

와 일치하고 싶지만 마지막 출력 $out이 항상 비어 있는 것으로 나타났습니다. 모든 결과를 올바르게 일치시키려면 어떻게 해야 합니까? 일반 전문가의 지도를 받으세요


답변을 찾은 후 추가 설명:

크롤러를 사용하여 인터넷에서 얻은 DOM 구조에는 공백과 줄바꿈이 많이 포함되어 있습니다. 대상 HTML을 일치시키려면 정규식 뒤에 패턴 수정 기호를 추가해야 합니다

<code>preg_match_all('/<div class="p-img">(.*?)<\/div>/is', $html, $out);</code>

/대소문자 무시

/s는 문자열을 한 줄로 취급하고 개행 문자를 일반 문자로 취급합니다.

답글 내용:

데모:

<code>$html='<div class="p-img"><a href="url"></a></div><div class="p-img"><img src="xx"></div>';

preg_match_all('/<div class="p-img">(.*?)<\/div>/', $html, $out);

var_dump($out);
</code>

대상 문자열 $html,

와 일치하고 싶지만 마지막 출력 $out이 항상 비어 있는 것으로 나타났습니다. 모든 결과를 올바르게 일치시키려면 어떻게 해야 합니까? 일반 전문가의 지도를 받으세요


답변을 찾은 후 추가 설명:

인터넷에서 DOM 구조를 얻으려면 크롤러를 사용하세요. 공백과 줄바꿈이 많이 있습니다. 대상 HTML을 일치시키려면 정규식 뒤에 패턴 수정 기호를 추가해야 합니다.

<code>preg_match_all('/<div class="p-img">(.*?)<\/div>/is', $html, $out);</code>

/대소문자 무시

/s는 문자열을 한 줄로 취급하고 개행 문자를 일반 문자로 취급합니다.

<code>$html='<div class="p-img"><a href=\'url\'></div><div class="p-img"><img src=\'xx\'></div>';

preg_match_all('/<div\sclass="p\-img">(.*?)<\/div>/is', $html, $out);

var_dump($out);</code>

출력:

<code>array(2) {
  [0]=>
  array(2) {
    [0]=>
    string(39) "<div class="p-img"><a href='url'></div>"
    [1]=>
    string(39) "<div class="p-img"><img src='xx'></div>"
  }
  [1]=>
  array(2) {
    [0]=>
    string(14) "<a href='url'>"
    [1]=>
    string(14) "<img src='xx'>"
  }
}</code>

어떻게 말해야 합니까? $html의 / /이어야 하며 ''

으로 이스케이프되어서는 안 됩니다.

실행이 안 돼요. 문법이나 규칙성에 문제가 있는 건지 아시나요?

답은 $html이 정의된 곳에 있습니다.

-번호를 이스케이프해야 합니다

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