- 此问题在此处已有答案**:
Extract JSON from HTML source and use it(1个答案)
How to extract and access data from JSON with PHP?(1个答案)
3天前关闭。
我有一个文本文件。我想读取该文件并从元素中获取一些数据。当我读取该文件时,它可能是返回字符串(我不确定)。该文件包含一些数据,如下所示:
Can we get Prism Cluster Mail in summarize way like below.
----------------------------------------------------------------
{
"Employees":[
{
"userId":"rirani",
"jobTitleName":"Developer",
"firstName":"Romin",
"lastName":"Irani",
"preferredFullName":"Romin Irani",
"employeeCode":"E1",
"region":"CA",
"phoneNumber":"408-1234567",
"emailAddress":"romin.k.irani@gmail.com"
},
{
"userId":"nirani",
"jobTitleName":"Developer",
"firstName":"Neil",
"lastName":"Irani",
"preferredFullName":"Neil Irani",
"employeeCode":"E2",
"region":"CA",
"phoneNumber":"408-1111111",
"emailAddress":"neilrirani@gmail.com"
},
{
"userId":"thanks",
"jobTitleName":"Program Directory",
"firstName":"Tom",
"lastName":"Hanks",
"preferredFullName":"Tom Hanks",
"employeeCode":"E3",
"region":"CA",
"phoneNumber":"408-2222222",
"emailAddress":"tomhanks@gmail.com"
}
]
}
Best Regards
The Team
我想提取用户名,职位名称和电话号码。我该怎么做呢?我是一个新的php。我已经尝试了以下代码。但它不能正常工作。有人能帮忙吗?
header('Content-type: application/json');
$data = preg_split("/\r\n/", file_get_contents("cluster.txt"));
$dt= json_encode($data, JSON_UNESCAPED_SLASHES);
$final_dt=stripslashes($dt);
$final_dt_arr=json_decode($final_dt,true);
//echo "<pre>"; print_r($final_dt_arr);
echo $final_dt;
5条答案
按热度按时间4dc9hkyq1#
我看了一下上面的脚本,你已经使用了
json_decode
,这是一个很好的开始。你能试试下面的代码(我的大多数项目)使用它吗:file_get_contents()
函数将JSON文件读入字符串1.使用
json_decode()
解码为PHP对象foreach
循环然后迭代对象中Employees数组的每个元素,提取所需的数据。也可以将第二个参数作为true传递,以返回一个关联数组。
oxiaedzo2#
到目前为止我已经理解了你的问题。我已经分享了我的答案。希望它可能会有帮助。
如果仍然不工作。请提供一个代码沙盒的例子
按你方要求
此外,如果您希望将其存储在数组中以备将来使用,您也可以尝试以下操作。
输出将如下所示。
mxg2im7a3#
@Lia,首先你将从你的字符串中只选择json数据,然后你将转换为数组。
mzaanser4#
如果文件的开头和结尾总是正好有3行非JSON内容,则可以在尝试解码之前从数据中删除无关内容,然后继续解码并以通常的方式使用JSON数据。
例如:
工作演示:https://3v4l.org/Ar7ne
sdnqo3pr5#
好吧,当我看到所有关于这个文本和JSON混合在一起的糟糕文件内容的评论时,我认为你唯一能做的就是尝试只提取文件的JSON部分,它位于左括号和右括号之间(
{
...}
)。这可以在正则表达式的帮助下完成。这显然不是很安全,因为周围的文本也可能有这些字符。我们会说情况不是这样的...
简单的正则表达式为
/\{.*\}/s
但是我们可以稍微改进一下,因为我们知道它应该包含
Employees
条目,如果文件的其余部分在注解中也有一些大括号,这会有所帮助,正则表达式将变为:要用蹩脚的内容测试它并获得模式的解释:https://regex101.com/r/wPGwIk/1
完整的PHP代码:
执行输出:
您可以在这里运行它:https://onlinephp.io/c/5386c