JSON ayrıştırmak için normal ifade

2 Cevap php

PHP, bu model için normal ifadeyi yazı ile yardıma ihtiyacım var:

[[{"type":"media","view_mode":"small","fid":"1","attributes":{"width":0,"height":0,"src":"http://localhost/x.png"}}]]

Bu metnin bir parçasıdır ve ben başka bir şey bu değiştirmeye çalışıyorum.

preg_replace_all() kullanmak ama desen ne olurdu bilemiyorum istiyorum. Herhangi bir yardım takdir.

2 Cevap

Eğer normal bir dize içinde bu json-dizeleri tanımlamak gerekir demek olduğundan, bu deseni kullanabilirsiniz:

'/\[\[.*?]]/s'

anlamı:

\[\[    # match two consecutive '['-s
.*?     # reluctantly match any character
]]      # match two consecutive ']'-s

Çünkü s bayrağı, . regex de satır sonları maç olacak.

Demo:

$text = '<p>blahhah blahaa blahhah blahaablahhah blahaablahhah 
    blahaablahhah blahaablahhah blahaablahhah blahaablahhah 
    blahaablahhah blahaa [[{"type":"media","view_mode":"small",
    "fid":"1","attributes":{"width":0,"height":0,"src":
    "localhost/d7mw/sites/…;}}]] more blah more blah more blah 
    more blahmore blah more blahmore blah more blahmore blah 
    more blahmore blah more blahmore blah more blahmore blah 
    more blahmore blah more blahmore blah more blahmore blah 
    more blah</p>';
preg_match_all('/\[\[.*?]]/s', $text, $matches);
print_r($matches);

Hangi çıktısı:

Array
(
    [0] => Array
        (
            [0] => [[{"type":"media","view_mode":"small",
    "fid":"1","attributes":{"width":0,"height":0,"src":
    "localhost/d7mw/sites/…;}}]]
        )

)