문제

콘텐츠에서 "c.aspx"(따옴표 제외)를 찾으면 전체 URL을 반환하는 간단한 preg_match가 필요합니다.예를 들어

$content = '<div>[4]<a href="/m/c.aspx?mt=01_9310ba801f1255e02e411d8a7ed53ef95235165ee4fb0226f9644d439c11039f%7c8acc31aea5ad3998&amp;n=783622212">New message</a><br/>';

이제 $content에서 "c.aspx"를 preg_match해야 하며 다음과 같이 출력됩니다.

"/m/c.aspx?mt=01_9310ba801f1255e02e411d8a7ed53ef95235165ee4fb0226f9644d439c11039f%7c8acc31aea5ad3998&amp;n=783622212"

$content에는 "c.aspx"를 제외한 더 많은 링크가 있어야 합니다.나는 그들을 원하지 않습니다."c.aspx"가 있는 모든 URL만 원합니다.

어떻게 하면 되는지 알려주세요.

도움이 되었습니까?

해결책

당신은 dom을 사용하여 html을 구문 분석하지 않고 regex가 아닙니다. Regex를 사용하여 속성 값을 구문 분석 할 수 있습니다.

편집 : C.ASPX를 확인하여 업데이트 된 예제.

$content = '<div>[4]<a href="/m/c.aspx?mt=01_9310ba801f1255e02e411d8a7ed53ef95235165ee4fb0226f9644d439c11039f%7c8acc31aea5ad3998&amp;n=783622212">New message</a>

<a href="#bar">foo</a>

<br/>';

$dom = new DOMDocument();
$dom->loadHTML($content);

$anchors = $dom->getElementsByTagName('a');

if ( count($anchors->length) > 0 ) {
    foreach ( $anchors as $anchor ) {
        if ( $anchor->hasAttribute('href') ) {
            $link = $anchor->getAttribute('href');
            if ( strpos( $link, 'c.aspx') ) {
                echo $link;
            }
        }
    }
}

다른 팁

c.aspx가 포함된 인용 문자열을 찾으려면 다음을 수행하세요.

/"[^"]*c\.aspx[^"]*"|'[^']*c\.aspx[^']*'/

그러나 실제로 대부분의 HTML을 구문 분석하려면 일치하는 항목이 실제로 href인지 확인할 수 있도록 일종의 DOM 구문 분석기를 사용하는 것이 더 나을 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top