>

preg_match를 사용한다고 언급 했어야합니다. 더 큰 코드에 대한 수정이며 이제는 전환 방법이 크게 어려워집니다.

정규식 일치를 만들려고합니다 :

<span class="paper-name">some string</span>\r    </h1>\r    <div class="data-row">\r        <span class="num">0.25

정말 필요한 것은 마지막 부분입니다. 숫자입니다. 0.00에서 9.99까지 가능합니다.

내가 그것을 깨려고 노력했다 :

<span class="paper-name">some string</span>
<div class="data-row">
<span class="num">
0.25

불운 사이에있는 모든 것을 찾으십시오. 누군가 도와주세요?

너무 가깝다 : 첫 번째 부분을 찾을 수 있습니다 :

^.*(?<=(<span class="paper-name">some string<))

그리고 두 번째 부분 :

<))(?.*)(span\sclass\=\"num"\>(\d*\.\d*))

그러나 연결할 수 없습니다. 두 번째 부분의 첫 번째 부분 다음에 첫 등장이 필요합니다.

  • 답변 # 1

    파서 방식을 대신 사용하십시오 :

    <?php
    # html string
    $html = <<<DATA
    <h1>
        <span class="paper-name">some string</span>
    </h1>
    <div class="data-row">
        <span class="num">0.25</span>
    </div>
    DATA;
    # set up the domdocument
    $dom = new DomDocument();
    $dom->loadHTML($html);
    # the xpath object
    $xpath = new DOMXpath($dom);
    # query the dom
    $numbers = $xpath->query("//span[@class = 'num']");
    # iterate over the results
    foreach ($numbers as $number) {
        echo $number->nodeValue;
    }
    
    

    이것은 올바르게 산출합니다

    0.25
    
    

    대부분의 다른 HTML 에서 작동합니다  스 니펫도 있지만 정규 표현식은 그렇지 않습니다.

    <시간> 수정 :

    정규 표현식을 사용한다고 주장하면 (이유는 무엇입니까?)

    <span class="num">\K\d(?:\.\d{2})?
    
    

    regex101.com 데모를 참조하십시오.

  • 답변 # 2

    정규 표현식을 사용하는 경우 https://regex101.com/r/DGbVbp/1/:

    $html = '<h1>
        <span class="paper-name">some string</span>
    </h1>
    <div class="data-row">
        <span class="num">
    
    0.25
    </span>
    <div class="data-row">
        <span class="num">
    
    0.22
    </span>
    </div>';
    preg_match_all('#<span class="num">(?:\s+)?(?P<num>\d(?:\.\d{2}):?)#isu', $html, $match);
    var_dump($match['num']);
    
    

  • 답변 # 3

    정규식 사용하기

    $str = '<span class="paper-name">some string</span><div class="data-row"><span class="num">0.25';
    preg_match('/([0-9]+\.?[0-9].)/', $str, $matches);
    echo $matches[1];
    
    

  • 이전 javascript - 내 AppJS에 지속적으로 표시되는 로더 아이콘
  • 다음 Atom 편집기에 접미사를 추가하여 코드를 올바르게 표시