问候!我听说过捕获和返回文本的各种方法。例如正则表达式。我对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
};
答案 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
本网站提供的工具可用于磨练您的正则表达技巧