【发布时间】:2019-06-08 06:50:55
【问题描述】:
(对不起...“_”在此帖子标题中的 str(和)replace 之间不接受)
我已经好几年没有做过任何正则表达式的事情了,并且陷入了僵局,试图弄清楚该怎么做。
然后我遇到了一个使用 str_replace 作为可能选项的代码 sn-p,并决定试一试。现在我在“StucksVille”。
目标是将 Java 应用程序的传入数据重新格式化为 PHP 页面,并将数据清理为常规 .csv 外观,并将该数据写入服务器上的 .csv 文件。每条数据记录有12个字段。
(传入数据) csv=data%2Cdata%2data%2Cdata%2Cdata%2Cdata%2Cdata%2Cdata%2Cdata%2Cdata%2Cdata%2Cdata%0D%0A
这就是我想要做的:
Delete/Remove beginning csv=
Replace all %2C with , (a comma)
Replace ending %0D with \r (carriage return)
Replace ending %0A with \n (newline)
这是我想出的,但 test.csv 文件数据看起来仍然与(未清理的)原始 {SIGH} 相同。
$entityBody = file_get_contents('php://input');
$cleaned1 = str_replace("\xcsv=", "\x", $entityBody);
$cleaned2 = str_replace("\x%2C", "\x,", $cleaned1);
$cleaned3 = str_replace("\x%0D", "\x\r", $cleaned2);
$cleaned4 = str_replace("\x%0A", "\x\n", $cleaned3);
$fp = fopen('test.csv', 'a+');
fwrite($fp, $cleaned4);
fclose($fp);
感谢任何帮助或指导。
-Stucko
【问题讨论】:
-
你能解释一下那些到处都是
\x的人应该达到什么目的吗? -
我认为你只需要从你对
str_replace的所有调用中删除\x -
为什么需要
str_replace()?您的输入字符串是查询字符串的片段,它是 URL 编码的。使用urldecode()获取实际值,然后根据需要进行处理:3v4l.org/5OcB5 -
为什么不使用 urldecode ?
-
@axiac 您应该将其发布为答案
标签: php regex str-replace