我正在寻找最有效和干净的方法,从一个字符串中提取数据并将其组织成一个信息数组。我正在构建一个工具,它可以将粘贴的备忘录信息转换成更易读的格式。
目前,我们收到了这样的新员工备忘录:
姓名:约翰·史密斯 服务:信通技术 经理:约翰·特纳 职位名称:信息技术支助干事
我希望能够将所有这些信息放入从textarea POST中获取的数组中,然后以更好的格式显示在页面上,如下所示:
全名:约翰·史密斯 服务领域:信通技术 线经理:约翰·特纳 职称:资讯科技支援主任
我知道我可以使用像 but ()这样的函数,但我只是想看看是否有更好的方法来做到这一点?
我想要将所有的信息存储在一个数组中,这样一旦它被发布到服务器上,就很容易回显到我的网页上。
$Newemployee['Name'] = "John Smith";
$Newemployee['Service'] = "ICT";
$Newemployee['Manager'] = "John Turner";
$Newemployee['Post_title'] = "IT Support Officer";如果有人有什么建议的话,那就太好了。
发布于 2016-06-29 12:24:38
假设您无法控制输入的格式,并且不以任何方式对输入进行消毒,我相信实现这一目标的最合适的方法是使用像您所描述的 input ()这样的函数:
$newuser = [];
$input = "NAME: JOHN SMITH
SERVICE: ICT
MANAGER: JOHN TURNER
POST TITLE: IT Support Officer";
$lines = array_filter(explode("\n", $input));
foreach ($lines as $line) {
$parts = explode(": ", $line);
$newuser[ucfirst(strtolower(str_replace(" ", "_", $parts[0])))] = $parts[1];
}编辑
更改数组索引以反映所描述的格式。
至于实际值,通常最好是以相同的形式(即小写)存储所有值,并在屏幕上打印它们时相应地格式化它们。这使得您可以轻松地比较值,而不需要知道每个字符串的格式--这意味着您可以检测'ICT‘缩略词之类的东西,并让它都是大写字母,而另一个'Service’可能不是缩略语,所以您更希望它被大写。
https://stackoverflow.com/questions/38099239
复制相似问题