Php在双引号之间提取一个字符串

时间:2018-06-16 12:29:45

标签: php regex

我需要使用包含双引号的preg_match来提取双引号之间的任何符号的字符串。

我已在下面的问题中尝试了所有解决方案,但对我的案例没有任何效果: php to extract a string from double quote

示例字符串:" ASD"" ASD ADS"""

我需要提取:ASD"" ASD ADS""

当前正在运行的代码,除了我不知道如何处理上面破坏整个结构的异常:

$regex = '/"(.*)"/imU';
$content = file_get_contents($file->getRealPath());
$filename = $file->getClientOriginalName();

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

return $matches[0];

1 个答案:

答案 0 :(得分:0)

在开口之间正确使用2个相邻的双引号 并关闭双引号,您必须使用2个替代方案: 要么是而不是双引号,要么连续2次 双引号。

所以正则表达式可以如下:

/"(?:[^"]|"")+"/g

说明

  • " - 匹配“开场”双引号。
  • (?: - 由于+而需要启动非捕获组 量化后。
    • [^"] - 第一个选择 - 除了。之外的任何字符 双引号。
  • | - 或者。
    • "" - 两个双引号。
  • ) - 非捕获组的结束。
  • + - 此群组可以出现一次或多次。
  • " - 匹配“结束”双引号。

仅使用g选项就足够了。