Search code examples
phpregexpreg-match-all

preg_match_all Compilation failed: range out of order in character class at offset


I have trouble to find specific object with preg_match_all pattern. I have a text. But I would like to find just one specific

Like I have a string of text

sadasdasd:{"website":["https://bitcoin.org/"]tatic/cloud/img/coinmarketcap_grey_1.svg?_=60ffd80');display:inline-block;background-position:center;background-repeat:no-repeat;background-size:contain;width:239px;height:41px;} .cqVqre.cmc-logo--size-large{width:263px;height:45px;}
/* sc-component-id: sc-2wt0ni-0 */

However I just need to find "website":["https://bitcoin.org/"]. Where website is dynamic data. Such as website can be a google "website":["https://google.com/"]

Right now I have something like this. That's just return a bulk of urls. I need just specific

    $parsePage = "sadasdasd:{"website":["https://bitcoin.org/"]tatic/cloud/img/coinmarketcap_grey_1.svg?_=60ffd80');display:inline-block;background-position:center;background-repeat:no-repeat;background-size:contain;width:239px;height:41px;} .cqVqre.cmc-logo--size-large{width:263px;height:45px;}
        /* sc-component-id: sc-2wt0ni-0 */";    
    $pattern = '/
     \"website":["          # [ character
                (?:         # non-capturing group
                    [^{}]   # anything that is not a { or }
                    |       # OR
                    (?R)    # recurses the entire pattern
                )*          # previous group zero or more times
           \"]              # ] character
    /x';
    preg_match_all($pattern, $parsePage, $matches);
    print_r($matches[0]);

Solution

  • Try :

    $pattern = '~"website":\["([^"]*)"~'