如何添加斜杠或;在每个字符串之后。
这就是我所拥有的
"SKU" "TITLE" "LINK" "LINK2" "PRICE" "World of Warcraft"
但我也会有这样的
"SKU";"TITLE";"LINK";"LINK2";"PRICE";"World of Warcraft"
我该怎么做这个?我的数据源不受我的控制——它来自外部 .txt 文件。
如何更改分隔符? 我已经尝试在每第二个
;
之后添加 "
,但这不适用于我的代码。我也尝试过str_replace()
str_replace(" ", ";", $item);
使用
preg_replace
函数的解决方案:
$str = '"61926182767182" "DAS GEILE GAME" "HTTP://google.com/123129182691239" "HTTP://google.com/123129182691239" "32.59"';
$str = preg_replace("/(\"[^\"]+\")\s/", "$1;", $str);
print_r($str); // '"61926182767182";"DAS GEILE GAME";"HTTP://google.com/123129182691239";"HTTP://google.com/123129182691239";"32.59"'
(如果输入字符串中有制表符而不是空格,或者单词之间可能有多个空格,则可以轻松扩展此方法。它更灵活)
您可以使用
" "
按
explode()
分隔符分割字符串,并使用 ";"
将结果数组与 implode()
字符串连接起来
$str = implode('";"', explode('" "', $str))
查看演示中的结果
要正确解析空格分隔和双引号值,请使用合法的 csv 解析工具 - 这也将处理转义的双引号。
str_getcsv($item, ' ')
你用这个数组做什么是未知的。
如果由于某种原因您确实需要将数据恢复为带有分号引号的原始 csv 形式,您可以临时流式传输并捕获
fputcsv()
输出,但请注意,双引号换行仅在必要时应用。 演示
$h = fopen('php://memory', 'r+');
fputcsv($h, str_getcsv($item, ' '), ';', '"');
rewind($h);
echo stream_get_contents($h);
输出:
61926182767182;"DAS GEILE GAME";HTTP://google.com/123129182691239;HTTP://google.com/123129182691239;32.59