我有一个令人讨厌的CSV文件,包含10,000行,我正在使用fgetcsv()
读取数据,然后将数据插入MySQL数据库。 CSV数据包括HTML标记,双引号和逗号。这是一个例子:
<div id=\"stcpDiv\">Maecenas eget blandit turpis. Cras lectus orci,
rutrum et risus a, egestas eleifend lorem. \"Morbi eu mi\" consequat,
elementum diam sit amet, maximus eros. Quisque imperdiet finibus
tellus, eu eleifend tortor porta non. Nulla feugiat tellus tempus,
pharetra mauris ut, <pre>laoreet nunc</pre>. Proin vulputate arcu
augue, \"et maximus\" sem faucibus nec. Aliquam vel diam enim. Ut
fringilla auctor vulputate. Vestibulum tincidunt felis ac enim
elementum, dapibus malesuada orci rutrum.</div>
<div></div>
我打开这样的文件:
while (($line = fgetcsv($file, 1000, ',', '"')) !== false) {
文件使用双引号保存在数据周围,并使用逗号作为分隔符。
我有两个问题:
首先,如何清理这些数据,删除HTMl和引号,以便它可以正确进入数据库?我试过strip_tags()
没有运气。我尝试使用str_replace()
替换双引号,stripslashes()
删除那些“\” - 没有运气的字符。我只是得到了破碎的数据。
第二,有没有办法做到这一点并保持换行符?
这是我的完整代码:
function display_import_tool() {
global $wpdb;
if ($_POST) {
$import_file = "/import/import.csv";
$file = fopen($import_file, "r");
$rows = array();
while (($line = fgetcsv($file, 1000, ',', '"')) !== false) {
$rows[] = $line;
}
fclose($file);
$count = count($rows);
if ($count > 0) {
foreach ($rows as $row) {
$content = array();
$content['id'] = $row[0];
$content['first_name'] = $row[1];
$content['middle_name'] = $row[2];
$content['last_name'] = $row[3];
$content['main_text'] = $row[4];
$wpdb->insert("fgss_users", $content);
}
}
}