从字符串中提取数据的最佳方法
Best way to extract data from a string
我正在寻找从字符串中提取数据并将其组织成信息数组的最有效、最简洁的方法。我正在构建一个工具,将粘贴的备忘录信息转换为更易读的格式。
目前我们收到这样的新员工备忘录:
NAME: JOHN SMITH
SERVICE: ICT
MANAGER: JOHN TURNER
POST TITLE: IT Support Officer
我希望能够将所有这些信息放入从文本区域 POST 获取的数组中,然后以如下更好的格式将其显示在页面上:
Full Name: John Smith
Service Area: ICT
Line Manager: John Turner
Job Title: IT Support Officer
我知道我可以使用像 explode() 这样的函数,但我只是想看看是否有更好的方法来做到这一点?
我想将所有信息存储在一个数组中,以便在我的网页发布到服务器后很容易将其 ECHO 到我的网页上。
$Newemployee['Name'] = "John Smith";
$Newemployee['Service'] = "ICT";
$Newemployee['Manager'] = "John Turner";
$Newemployee['Post_title'] = "IT Support Officer";
如果有人有任何建议,那就太好了。
假设您无法控制输入的格式,并且没有以任何方式清理输入,我相信实现此目的最合适的方法是使用 explode() 如您所述:
$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' 可能不是首字母缩写词所以你希望它只是被大写。
我正在寻找从字符串中提取数据并将其组织成信息数组的最有效、最简洁的方法。我正在构建一个工具,将粘贴的备忘录信息转换为更易读的格式。
目前我们收到这样的新员工备忘录:
NAME: JOHN SMITH
SERVICE: ICT
MANAGER: JOHN TURNER
POST TITLE: IT Support Officer
我希望能够将所有这些信息放入从文本区域 POST 获取的数组中,然后以如下更好的格式将其显示在页面上:
Full Name: John Smith
Service Area: ICT
Line Manager: John Turner
Job Title: IT Support Officer
我知道我可以使用像 explode() 这样的函数,但我只是想看看是否有更好的方法来做到这一点?
我想将所有信息存储在一个数组中,以便在我的网页发布到服务器后很容易将其 ECHO 到我的网页上。
$Newemployee['Name'] = "John Smith";
$Newemployee['Service'] = "ICT";
$Newemployee['Manager'] = "John Turner";
$Newemployee['Post_title'] = "IT Support Officer";
如果有人有任何建议,那就太好了。
假设您无法控制输入的格式,并且没有以任何方式清理输入,我相信实现此目的最合适的方法是使用 explode() 如您所述:
$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' 可能不是首字母缩写词所以你希望它只是被大写。