PHP,使用preg_replace删除双引号内的字符串?

PHP, Remove a string inside double quotation mark using preg_replace?

我有一个 PHP 字符串,格式如下:

$str = 'This is a "sample string"';

我想删除双引号字符串。像这样:

This is a

我尝试了什么:

$fileread = preg_replace('!/\*.*?\*/!s',' -', $fileread);
$fileread = preg_replace('![ \t]*//.*[ \t]*[\r\n]!', '', $fileread);
$separator = preg_replace('/"[^"]+"/','',$fileread);
$separator = explode(" ",$separator);

有没有更简单的方法来提取它?

<?php
    $str = 'This is a "sample string".';
    $str = preg_replace('#(").*?(")#', '', $str);
    echo $str;
?>

您可以简单地匹配包含在双引号内的字符串并将其替换为空字符串:

$str = 'This is a "sample string".';

$str = preg_replace('/".*"/', '', $str);

echo $str;

使用这个:-

$fileread = preg_replace('("+[a-z A-Z 0-9 !@#$%^&*()]+")', "", $fileread);

为确保正则表达式引擎的处理速度最快,请使用带有否定字符的贪婪量词 (*) class [^"]).

我什至会删除可选的前导 space 以使输出更清晰。如果引号字符串可能是第一个或最后一个单词,那么您需要使用两个分支——一个带有可选的前导 space 和一个带有可选的尾随 space.

代码:(Demo)

$str = 'This is a "sample string" more text';

var_export(
    preg_replace('~ ?"[^"]*"~', '', $str)
);

输出:

'This is a more text'