我正在編輯一個包含隱藏換行符的 csv 檔案。當我應用以下 php 腳本時,換行符已成功從整個檔案中洗掉。
$csvFileNew = str_replace(array("\r", "\n"), '', $csvFileOld);
但我只想從檔案的某些部分中洗掉這些換行符 - 在所有出現的以下內容之間(用單引號括起來):
$start = ',""';
$end = '",';
我當前的腳本如下所示:
$csvFileOld = "pre text appears here....,\"\"key words appear here\"\",....post text appears here";
//line break always appears between the final 2 quotation marks
$csvFileNew = preg_replace_callback('`,""([^"]*)",`', function($matches)
{
return str_replace(array("\r", "\n"), '', $matches[1]);
},$csvFileOld);
不幸的是,這個腳本沒有洗掉換行符——我假設我使用的正則運算式沒有足夠的抓取。誰能提出一個優雅的解決方案?
我知道由于換行符,答案不可能包含一個作業示例,但是我真的只是在尋找一個在分隔符之間獲取正確內容的解決方案。
uj5u.com熱心網友回復:
你可以使用
<?php
$csvFileOld = "pre text appears here....,\"\"key\n\n words\r\n appear\r\n here\"\",....post text appears here";
//line break always appears between the final 2 quotation marks
$csvFileNew = preg_replace_callback('`,""(.*?)",`s', function($matches)
{
return str_replace(array("\r", "\n"), '', $matches[1]);
},$csvFileOld);
echo $csvFileNew;
請參閱PHP 演示。
正,""(.*?)",則運算式現在匹配從,""直到第一次出現",子字串。
添加標志以s允許點跨行匹配。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/477981.html
