Как разобрать информацию в PHP? - PullRequest
0 голосов
/ 13 сентября 2010

У меня есть следующий текст ниже, какой самый простой способ разобрать его?

if(typeof sa_inst.apiCB == 'function') sa_inst.apiCB({"AS":{"Query":"g","FullResults":1,"Results":[{"Type":"AS","Suggests":[{"Txt":"g<strong>oogle</strong>","Type":"AS","Sk":""},{"Txt":"g<strong>mail</strong>","Type":"AS","Sk":"AS1"},{"Txt":"g<strong>oogle</strong> <strong>maps</strong>","Type":"AS","Sk":"AS2"},{"Txt":"g<strong>oogle</strong> <strong>earth</strong>","Type":"AS","Sk":"AS3"},{"Txt":"g<strong>ames</strong>","Type":"AS","Sk":"AS4"},{"Txt":"g<strong>oogle</strong> <strong>images</strong>","Type":"AS","Sk":"AS5"},{"Txt":"g<strong>amestop</strong>","Type":"AS","Sk":"AS6"},{"Txt":"g<strong>rainger</strong>","Type":"AS","Sk":"AS7"}]}]}} /* pageview_candidate */);

Я хотел бы получить только то, что после ("Txt" :), не включая <strong> или что-то еще. Например, из приведенного выше текста я хотел бы получить что-то вроде:

Google, Gmail, карты Google, изображения Google и т. Д.

в массиве. Помогите пожалуйста?

Ответы [ 2 ]

6 голосов
/ 13 сентября 2010

Текст в формате JSON.Используйте json_decode для его анализа.

$str = '{"AS":{"Query":"g","FullResults":1,"Results":[{"Type":"AS","Suggests":[{"Txt":"g<strong>oogle</strong>","Type":"AS","Sk":""},{"Txt":"g<strong>mail</strong>","Type":"AS","Sk":"AS1"},{"Txt":"g<strong>oogle</strong> <strong>maps</strong>","Type":"AS","Sk":"AS2"},{"Txt":"g<strong>oogle</strong> <strong>earth</strong>","Type":"AS","Sk":"AS3"},{"Txt":"g<strong>ames</strong>","Type":"AS","Sk":"AS4"},{"Txt":"g<strong>oogle</strong> <strong>images</strong>","Type":"AS","Sk":"AS5"},{"Txt":"g<strong>amestop</strong>","Type":"AS","Sk":"AS6"},{"Txt":"g<strong>rainger</strong>","Type":"AS","Sk":"AS7"}]}]}}';

$result = json_decode($str);

//Show all 'Txt' values
foreach($result->AS->Results[0]->Suggests as $suggests)
echo "Txt contains: ".htmlspecialchars($suggests->Txt). "<br/>";

//Show full contents of result
echo "<pre>";
print_r($result);

Сначала выводятся значения Txt:

Txt contains: g<strong>mail</strong>  
Txt contains: g<strong>oogle</strong> <strong>maps</strong>  
Txt contains: g<strong>oogle</strong> <strong>earth</strong>  
Txt contains: g<strong>ames</strong>  
Txt contains: g<strong>oogle</strong> <strong>images</strong>  
Txt contains: g<strong>amestop</strong>  
Txt contains: g<strong>rainger</strong>  

И затем полные данные JSON тоже:

stdClass Object
(
    [AS] => stdClass Object
        (
            [Query] => g
            [FullResults] => 1
            [Results] => Array
                (
                    [0] => stdClass Object
                        (
                            [Type] => AS
                            [Suggests] => Array
                                (
                                    [0] => stdClass Object
                                        (
                                            [Txt] => google
                                            [Type] => AS
                                            [Sk] => 
                                        )

                                    [1] => stdClass Object
                                        (
                                            [Txt] => gmail
                                            [Type] => AS
                                            [Sk] => AS1
                                        )

                                    [2] => stdClass Object
                                        (
                                            [Txt] => google maps
                                            [Type] => AS
                                            [Sk] => AS2
                                        )

                                    [3] => stdClass Object
                                        (
                                            [Txt] => google earth
                                            [Type] => AS
                                            [Sk] => AS3
                                        )

                                    [4] => stdClass Object
                                        (
                                            [Txt] => games
                                            [Type] => AS
                                            [Sk] => AS4
                                        )

                                    [5] => stdClass Object
                                        (
                                            [Txt] => google images
                                            [Type] => AS
                                            [Sk] => AS5
                                        )

                                    [6] => stdClass Object
                                        (
                                            [Txt] => gamestop
                                            [Type] => AS
                                            [Sk] => AS6
                                        )

                                    [7] => stdClass Object
                                        (
                                            [Txt] => grainger
                                            [Type] => AS
                                            [Sk] => AS7
                                        )

                                )

                        )

                )

        )

)
0 голосов
/ 13 сентября 2010

Это будет работать, но я удалил 'из' функции '

<?php
    echo $text = 'if(typeof sa_inst.apiCB == function sa_inst.apiCB({"AS":{"Query":"g","FullResults":1,"Results":[{"Type":"AS","Suggests":[{"Txt":"g<strong>oogle</strong>","Type":"AS","Sk":""},{"Txt":"g<strong>mail</strong>","Type":"AS","Sk":"AS1"},{"Txt":"g<strong>oogle</strong> <strong>maps</strong>","Type":"AS","Sk":"AS2"},{"Txt":"g<strong>oogle</strong> <strong>earth</strong>","Type":"AS","Sk":"AS3"},{"Txt":"g<strong>ames</strong>","Type":"AS","Sk":"AS4"},{"Txt":"g<strong>oogle</strong> <strong>images</strong>","Type":"AS","Sk":"AS5"},{"Txt":"g<strong>amestop</strong>","Type":"AS","Sk":"AS6"},{"Txt":"g<strong>rainger</strong>","Type":"AS","Sk":"AS7"}]}]}} /* pageview_candidate */);';
    echo '<br />';
    $text = strip_tags($text); // remove html tags
    $a = explode('"Txt":"', $text);
    $app = array();
    foreach ($a as $c) {
        $b = explode('"', $c);
        $app = $b[0];
    }
    unset($app[0]);
    var_dump($app);
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...