使用php解析javascript文本

时间:2011-03-25 10:52:18

标签: php javascript parsing

问候!我听说过捕获和返回文本的各种方法。例如正则表达式。我对PHP有点新,但我想知道如何使用PHP从这个JavaScript代码中捕获和返回文本。我只对捕获msgBody,msgTitle和insertDate感兴趣。感谢您查看我的问题

function wibiyaNotifierLoad() {
    if (typeof(jQuery.cookie) == 'function') {
        loadjscssfile("Graphics_Toolbar/Notifier/notifier_2.css?v2", "css", "head");
        var data = {
            "count": 1,
            "notifications": [{
                "Id": "264727",
                "toolbarId": "602582",
                "msgId": "9",
                "msgTitle": "Its that time of year!",
                "msgBody": "check you email for updates!",
                "msgLink": "",
                "msgImage": "",
                "filter": "",
                "startDate": "2011-03-22 23:00:00",
                "expirationDate": "2011-03-23 00:00:00",
                "active": "1",
                "insertDate": "2011-03-22 23:12:31"
            }],
            "ok": true
        };

4 个答案:

答案 0 :(得分:2)

当你说解析时,你应该研究J4P5。但是你可以在这里找到一个不精确的解决方案和正则表达式。捕获文本然后提取单个值:

preg_match('#(\[\{.*?\}\])#s', $javascript, $match);
$values = json_decode($match[1], TRUE);

$msgBody = $values[0]["msgBody"];

然而,可以通过使用'#"notifications": (\[\{启动正则表达式来使其更加明确。

答案 1 :(得分:2)

对于单个正则表达式来捕获所需的数据,您可以使用以下模式(请注意,在插入代码时,这需要反斜杠和转义引号):

/(["'])(msgBody|msgTitle|insertDate)\1\s*:\s*(['"])((?:[^'"\\]+|\\.|(?!\3|\\).)*)\3/s

密钥的名称将在子捕获2和子捕获4中的实际内容中。例如,假设您的javascript存储在$text中,您可以使用以下PHP代码来提取信息:

<?php

$regex = '/(["\'])(msgBody|msgTitle|insertDate)\\1\\s*:\\s*([\'"])((?:[^\'"\\\\]+|\\\\.|(?!\\3|\\\\).)*)\\3/s';
preg_match_all($regex, $text, $match, PREG_SET_ORDER);

$data = array();

foreach ($match as $cap)
{
    $data[$cap[2]] = $cap[4];
}

var_dump($data);

答案 2 :(得分:2)

 preg_match('/\[(.*?)\]/s', $javascript, $match);
 $json = json_decode($match[1]);
 print $json->{'msgBody'};
 print $json->{'msgTitle'};
 print $json->{'insertDate'};

答案 3 :(得分:0)

我经常使用preg_replace函数来捕获我想要的一些数据。你可以在这里试试:

http://www.functions-online.com/preg_replace.html

本网站提供的工具可用于磨练您的正则表达技巧

http://gskinner.com/RegExr/