我正在尝试将csv导入的数字从(5.25)转换为-5.25以导入数据库。
$CSV[] = 'abcd';
$CSV[] = '(5.25)';
foreach($CSV as $Record){
if(preg_match_all("/[()]/", $Record, $output_array)){
$Record = '-' . preg_replace("/[()]/", '', $Record);
}
}
但是,因为我需要在csv中的每条记录上运行此转换,并且我们不知道列中的数据是数字还是某些文本,我只需要转换字符串,如果两个字符都是提出并包装数字。
这是使用preg_match和preg_replace的正确方法吗?它似乎正在回归所有事情,并且基本上在每个csv列中添加了一个短划线“ - ”。
答案 0 :(得分:1)
你想要这样的东西:
$CSV[] = 'abcd';
$CSV[] = '(5.25)';
$Record = array();
foreach($CSV as $value){
$Record[] = preg_replace("/\(([^a-zA-Z]+?)\)/", '-$1', $value);
}
var_dump($Record);