【问题标题】:Regex Double Quotes and html tags正则表达式双引号和 html 标签
【发布时间】: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 ; (因为这似乎真的是分隔符),然后去掉前导和尾随“。这应该会得到你想要的数据,包括中间的引号。如果可行,我可以写一个更好的答案。

标签: php regex symfony


【解决方案1】:

试试这个:

<?php

    $string = '1;"admin_loginIncorrect";"Podane hasło jest nieprawidłowe";"1";"0" 2;"admin_logOut";"Wyloguj";"1";"0" 3786;"tutorial_text_3";"Wenn Sie 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 Sekunden. 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. Denken Sie jedoch daran dass wenn Sie zu lange warten jemand wird schneller sein als Sie!. ;5";"0" 3914;"auction_desc_22297";"MacBook 12" 256GB - Space Gray
    256 GB pamięci masowej flash z magistralą PCIe na płycie głównejDwurdzeniowy procesorIntel Core m3 1,1 GHzTurbo Boost do 2,2 GHz8 GB pamięci RAMIntel HD Graphics 515
    Zawartość opakowaniaMacBookZasilacz USB-C o mocy 29 WPrzewód zasilający USB-C (2 m)
    Cena zawiera koszt przesyłki."\'"5";"0"';

    $regex = '#"(?<quotes>[^"]*)"#';

    preg_match_all($regex, $string, $matches);

    var_dump($matches['quotes']);

在这里查看:https://3v4l.org/8Z8J5

【讨论】:

  • 它跳过了第二个值 "Podane hasło jest nieprawidłowe" 实际上它跳过了更多的值
  • 啊,是的,奇怪的非标准字符,正则表达式只需要稍微调整一下
  • 还是一样。它跳过了很多
  • 我们需要比\w+更聪明的东西
  • 稍微好点,但" " " " 双引号 [12194]=> string(6) "kaufen"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-20
  • 2013-05-10
  • 2011-09-15
相关资源
最近更新 更多