【发布时间】:2017-07-27 13:57:04
【问题描述】:
我从 csv 文件中读取数据。并将其写入字符串,现在需要对这些数据进行分类。
if (($handle = fopen($_FILES['app_bundle_upload_type']['tmp_name']['file'], "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
$row++;
for ($c=0; $c < $num; $c++) {
$result.= $data[$c] . "<br />\n";
}
}
}
如何正确使用正则表达式对此类数据进行分组。我确实关心“”里面的一切。我试过 regex = '/"(.*?)"/s';但不能在其他引号内转义双引号。我该怎么办 ?还有我现在没有的整个 html 数据该怎么办。
这是我的字符串
1;"admin_loginIncorrect";"Podane hasło jest nieprawidłowe";"1";"0" 2;"admin_logOut";"Wyloguj";"1";"0" 3786;“tutorial_text_3”;“文思 ein Produkt kaufen möchten dessen Preis Sie soeben aufgedeckt haben tun Sie es schnell und klicken Sie auf ""kaufen"" - Sie haben dafür 20 塞昆登。 Sie können aber eine Stunde oder einen Tag warten um zu sehen ob der Preis noch weiter fällt。 Das Aufdecken des Preises von anderen Benutzern reduziert den Preis kontinuierlich weiter。电研 Sie jedoch daran dass wenn Sie zu lange warten jemand wird schneller sein 也就是 Sie!。 ;5";"0" 3914;"auction_desc_22297";"MacBook 12" 256GB - 深空灰色
256 GB pamięci masowej flash z magistralą PCIe na płycie głównejDwurdzeniowy 处理器Intel Core m3 1,1 GHzTurbo Boost 做 2,2 GHz8 GB pamięci RAM英特尔高清显卡 515
Zawartość opakowaniaMacBookZasilacz USB-C o mocy 29 WPrzewód zasilający USB-C (2 m)
Cena zawiera koszt przesyłki."'"5";"0"
@编辑
我以错误的方式开始。使用正则表达式是一项复杂的任务。感谢fgetcsv 我可以轻松很多
if (($handle = fopen($fileName, "r")) !== FALSE) {
while (($data = fgetcsv($handle)) !== FALSE) { .... }}
它逐行读取并返回到数组中
$数据[$i]
【问题讨论】:
-
你可以尝试做一些类似的事情,split on ; (因为这似乎真的是分隔符),然后去掉前导和尾随“。这应该会得到你想要的数据,包括中间的引号。如果可行,我可以写一个更好的答案。