相关疑难解决方法(0)

如何用PHP解析JSON文件?

我试图使用PHP解析JSON文件.但我现在被困住了.

这是我的JSON文件的内容:

{
    "John": {
        "status":"Wait"
    },
    "Jennifer": {
        "status":"Active"
    },
    "James": {
        "status":"Active",
        "age":56,
        "count":10,
        "progress":0.0029857,
        "bad":0
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止所尝试的:

<?php

$string = file_get_contents("/home/michael/test.json");
$json_a = json_decode($string, true);

echo $json_a['John'][status];
echo $json_a['Jennifer'][status];
Run Code Online (Sandbox Code Playgroud)

但是,因为我不知道的名字(例如'John','Jennifer')和所有可用键和值(如'age','count')事前,我想我需要创建一些foreach循环.

我会很感激这样的例子.

php json

386
推荐指数
10
解决办法
72万
查看次数

PHP json_decode()返回带有效JSON的NULL?

我将此JSON对象存储在纯文本文件中:

{
    "MySQL": {
        "Server": "(server)",
        "Username": "(user)",
        "Password": "(pwd)",
        "DatabaseName": "(dbname)"
    },
    "Ftp": {
        "Server": "(server)",
        "Username": "(user)",
        "Password": "(pwd)",
        "RootFolder": "(rf)"
    },
    "BasePath": "../../bin/",
    "NotesAppPath": "notas",
    "SearchAppPath": "buscar",
    "BaseUrl": "http:\/\/montemaiztusitio.com.ar",
    "InitialExtensions": [
        "nem.mysqlhandler",
        "nem.string",
        "nem.colour",
        "nem.filesystem",
        "nem.rss",
        "nem.date",
        "nem.template",
        "nem.media",
        "nem.measuring",
        "nem.weather",
        "nem.currency"
    ],
    "MediaPath": "media",
    "MediaGalleriesTable": "journal_media_galleries",
    "MediaTable": "journal_media",
    "Journal": {
        "AllowedAdFileFormats": [
            "flv:1",
            "jpg:2",
            "gif:3",
            "png:4",
            "swf:5"
        ],
        "AdColumnId": "3",
        "RSSLinkFormat": "%DOMAIN%\/notas\/%YEAR%-%MONTH%-%DAY%\/%TITLE%/",
        "FrontendLayout": "Flat",
        "AdPath": "ad",
        "SiteTitle": "Monte Maíz: Tu Sitio",
        "GlobalSiteDescription": "Periódico local de Monte …
Run Code Online (Sandbox Code Playgroud)

php null json

98
推荐指数
11
解决办法
19万
查看次数

常量 FILTER_SANITIZE_STRING 已弃用

我已经安装了 PHP 8.1,并开始测试我的旧项目。FILTER_SANITIZE_STRING我已经像这样使用了过滤器:

$username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING);
Run Code Online (Sandbox Code Playgroud)

现在我得到这个错误:

已弃用:常量 FILTER_SANITIZE_STRING 已弃用

当我使用时也会发生同样的情况FILTER_SANITIZE_STRIPPED

已弃用:常量 FILTER_SANITIZE_STRIPPED 已弃用

我可以用什么来代替它?

php sanitization filter php-8.1

81
推荐指数
3
解决办法
8万
查看次数

webservice调用后,json_decode返回NULL

有一个奇怪的行为json_encodejson_decode我不能找到一个解决方案:

我的php应用程序调用php Web服务.webservice返回如下所示的json:

var_dump($foo):
string(62) "{"action":"set","user":"123123123123","status":"OK"}"
Run Code Online (Sandbox Code Playgroud)

现在我想在我的应用程序中解码json:

$data = json_decode($foo, true)
Run Code Online (Sandbox Code Playgroud)

但它返回NULL:

var_dump($data):
NULL
Run Code Online (Sandbox Code Playgroud)

我用的是php5.来自webservice的响应的Content-Type :( "text/html; charset=utf-8"也尝试使用"application/json; charset=utf-8")

可能是什么原因?

php json

57
推荐指数
9
解决办法
10万
查看次数

PHP:json_decode无效

这并不能正常工作:

$jsonDecode = json_decode($jsonData, TRUE);
Run Code Online (Sandbox Code Playgroud)

但是,如果我复制字符串$jsonData并将其手动放入解码函数中,它确实有效.

有效:

$jsonDecode = json_decode('{"id":"0","bid":"918","url":"http:\/\/www.google.com","md5":"6361fbfbee69f444c394f3d2fa062f79","time":"2014-06-02 14:20:21"}', TRUE);
Run Code Online (Sandbox Code Playgroud)

我输出$jsonData复制它并在解码函数中输入如上所述.然后它奏效了.但是,如果我$jsonData直接放入解码功能,它不会.

var_dump($jsonData) 说明:

string(144) "{"id":"0","bid":"918","url":"http:\/\/www.google.com","md5":"6361fbfbee69f444c394f3d2fa062f79","time":"2014-06-02 14:20:21"}"
Run Code Online (Sandbox Code Playgroud)

$jsonData来自一个加密$_GET变量.要加密它我用这个:

$key = "SOME KEY";

$iv_size = mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);

$enc = mcrypt_encrypt(MCRYPT_BLOWFISH, $key, $data, MCRYPT_MODE_ECB, $iv);

$iv = rawurlencode(base64_encode($iv));
$enc = rawurlencode(base64_encode($enc));

//To Decrypt
$iv = base64_decode(rawurldecode($_GET['i']));
$enc = base64_decode(rawurldecode($_GET['e']));

$data = mcrypt_decrypt(MCRYPT_BLOWFISH, $key, $enc, MCRYPT_MODE_ECB, $iv);
Run Code Online (Sandbox Code Playgroud)

php json

20
推荐指数
5
解决办法
6万
查看次数

在PHP中从远程URL读取JSON

我有这个JSON文件:

http://www.jeewanaryal.com/angryQuiz/eighties/json/eighties.json

我试图在PHP中解码它如下:

$json = file_get_contents('http://www.jeewanaryal.com/angryQuiz/eighties/json/eighties.json'); 
$data = json_decode($json);
var_dump($data);
Run Code Online (Sandbox Code Playgroud)

但是,我得到的输出是NULL.我错过了什么吗?

php json

9
推荐指数
2
解决办法
2万
查看次数

PHP - 如何使用ANSI编码保存文本文件?

我正在做:

file_put_contents("txt/myfile.txt", $fileContents);
Run Code Online (Sandbox Code Playgroud)

我尝试了很多方法来强制我的文本文件是ANSI,如:

$fileContents = mb_convert_encoding($fileContents , mb_detect_encoding($fileContents , mb_detect_order(), true), 'WINDOWS-1252');
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

$fileContents = iconv("ISO-8859-1", "WINDOWS-1252", $fileContents );
Run Code Online (Sandbox Code Playgroud)

我需要ANSI,因为当我使用MS-DOS中的"type"命令(Windows 7中的cmd.exe)打开它时,文本文件应该看起来不错

如果我打开当前文件,我可以看到UTF-8 BOM:

C:\ Users\XXX>键入C:\ myfile.txt

'╗┐V01766699900000000000000005350005122013

如果我用Notepad ++打开文件并应用"转换为ANSI"我得到(我需要的):

C:\ Users\XXX>键入C:\ myfile.txt

V017666999 00000000000000005350005122013

有什么办法可以解决这个问题吗?提前致谢.(对不起,我的英语不好)

编辑:现在我知道发生了什么,文件正确创建,但下载时会添加不需要的BOM.这是问题,我只需要改变这个:

file_put_contents("txt/myfile.txt", $fileContents);
Run Code Online (Sandbox Code Playgroud)

对此(下载为二进制文件,使其保持不变):

$fileContents = mb_convert_encoding($fileContents , mb_detect_encoding($fileContents , mb_detect_order(), true), 'WINDOWS-1252');
Run Code Online (Sandbox Code Playgroud)

如果您愿意,可以删除此问题,因为正在正确创建文件.如果将文件直接从服务器复制到我的电脑并使用"类型",它看起来没问题.

php ansi utf-8 plaintext

6
推荐指数
1
解决办法
9259
查看次数

无法从字符串中删除 \ufeff

该应用程序基本上是这样工作的:

1) 用户上传 CSV 文件。

2) 该文件被 PHP 通过 POST 捕获。

3) 我fopen()fgetcsv().打开文件并用.

第一列总是有\ufeff字符。我知道这叫做 UTF-8 BOM,它是由 Microsoft Excel 生成的。但是,当我想删除它时,我不能。

我试过了: str_replace('\ufeff', '', $columns[0]);

php character-encoding

5
推荐指数
2
解决办法
7209
查看次数

Json_encode,json_decode和UTF8

所有,

我使用PHP向Web服务器发出JSON请求,它在变量中返回一个JSON响应.JSON响应将包含许多键和值.我从服务器获得的JSON响应中包含特殊字符.因此,我使用以下语句将其转换为UTF8,解码JSON并将其用作数组以显示到UI.

$response = json_decode(utf8_encode($jsonresponse));
Run Code Online (Sandbox Code Playgroud)

现在,我必须在JSON请求中将相同的值传递给服务器以执行某些操作.但是,当我通过

$jsonrequest = json_encode(utf8_encode($request));
Run Code Online (Sandbox Code Playgroud)

到服务器,它失败了.

以下代码成功读取特殊字符并将其显示到UI.但如果我必须将utf8_encode值传递给服务器,则会失败.

当前的整个往返代码如下:

$requestdata  = json_encode($request);
$jsonresponse = //Do something to get from server;
$response = json_decode(utf8_encode($jsonresponse));
Run Code Online (Sandbox Code Playgroud)

我怎样才能修改它,以便传递确切的值来表示我从服务器的json响应中收到的内容?

php json zend-framework

3
推荐指数
2
解决办法
4万
查看次数

将变量字符串解析为GET查询字符串不正确

码:

function updateGUI()
    {
        foreach ($GLOBALS['content_array'] as $i)
        {
            $title = $i[0];
            $rating = $i[1];
            echo "<li class=contentList><a class=contentListLink href=filmer_php.php?title=".$title."><span class=spantitle>".$title."</span><span class=spanrating>".asteriskifyRating($rating)."</span></a></li>";
        }
    }
Run Code Online (Sandbox Code Playgroud)

输出: 在此输入图像描述 在此输入图像描述

资源:http: //dist3.webbintro.se/assignments/3/movies.txt

背景:所以我创建<li><a>重视他们和我得到$title<li>从一个全局变量(并不重要).问题是查询字符串不包含完整字符串,因为某些字符串$title包含空格,因此它们会在空格处被截断.我已经尝试使用转义字符,\"但没有工作,我找不到任何关于如何正确解析的好文章..我也希望如果解决方案不包括正则表达式,但如果这只能用正则表达式解决那就这样吧.

EDIT1: context:好的,urlencode修复了最大的问题.在"星球大战"之前,我还有一个mojibake广场,有什么建议导致这个问题吗?

完整代码:http: //jsfiddle.net/Uv5bV/

EDIT2: 删除了utf-8 BOM,从这个线程获得了解决方案:如何在"<!DOCTYPE>"之前删除多个UTF-8 BOM序列?

码:

function remove_utf8_bom($text)
    {
    $bom = pack('H*','EFBBBF');
    $text = preg_replace("/^$bom/", '', $text);
    return $text;
    }
Run Code Online (Sandbox Code Playgroud)

php string parsing get query-string

0
推荐指数
1
解决办法
102
查看次数