当前位置: 首页 > 面试题库 >

PHP爆炸字符串,但将引号中的单词视为单个单词

白子昂
2023-03-14
问题内容

如何爆炸以下字符串:

Lorem ipsum "dolor sit amet" consectetur "adipiscing elit" dolor

进入

array("Lorem", "ipsum", "dolor sit amet", "consectetur", "adipiscing elit", "dolor")

以便将引号中的文本视为一个单词。

这是我现在拥有的:

$mytext = "Lorem ipsum %22dolor sit amet%22 consectetur %22adipiscing elit%22 dolor"
$noquotes = str_replace("%22", "", $mytext");
$newarray = explode(" ", $noquotes);

但是我的代码将每个单词分成一个数组。如何使引号内的单词被视为一个单词?


问题答案:

您可以使用preg_match_all(...)

$text = 'Lorem ipsum "dolor sit amet" consectetur "adipiscing \\"elit" dolor';
preg_match_all('/"(?:\\\\.|[^\\\\"])*"|\S+/', $text, $matches);
print_r($matches);

会产生:

Array
(
    [0] => Array
        (
            [0] => Lorem
            [1] => ipsum
            [2] => "dolor sit amet"
            [3] => consectetur
            [4] => "adipiscing \"elit"
            [5] => dolor
        )

)

如您所见,它还考虑了带引号的字符串中的转义引号。

编辑

简短说明:

"           # match the character '"'
(?:         # start non-capture group 1 
  \\        #   match the character '\'
  .         #   match any character except line breaks
  |         #   OR
  [^\\"]    #   match any character except '\' and '"'
)*          # end non-capture group 1 and repeat it zero or more times
"           # match the character '"'
|           # OR
\S+         # match a non-whitespace character: [^\s] and repeat it one or more times

并且在匹配%22而不是双引号的情况下,您可以执行以下操作:

preg_match_all('/%22(?:\\\\.|(?!%22).)*%22|\S+/', $text, $matches);


 类似资料:
  • 我正在寻找正确的regex来为我提供以下结果: null 例子: 福吧 组1:foo 组2:bar 说明:在空格上拆分 组1:foo bar 描述:用双引号包围,所以将foo和bar分组,但不要打印双引号 null null null null null 组1:foo bar 组2:堆栈溢出 组1:foo'bar 组2:堆栈溢出 组3:如何 组4:do 组5:您 组6:do

  • 本文向大家介绍groovy 单引号字符串,包括了groovy 单引号字符串的使用技巧和注意事项,需要的朋友参考一下 示例            

  • 本文向大家介绍简单概括PHP的字符串中单引号与双引号的区别,包括了简单概括PHP的字符串中单引号与双引号的区别的使用技巧和注意事项,需要的朋友参考一下 今天有个朋友问起,说下区别,顺便复习下。 单引号与双引号的不同: " "双引号里面的字段会经过编译器解释,然后再当作HTML代码输出。 ' '单引号里面的不进行解释,直接输出。  单引号解析的时间比双引号快 。 单引号支持\转义符,双引号支持的转义

  • 本文向大家介绍替换php字符串中的单引号为双引号的方法,包括了替换php字符串中的单引号为双引号的方法的使用技巧和注意事项,需要的朋友参考一下 实例如下: 以上这篇替换php字符串中的单引号为双引号的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 问题内容: 简单吧?好吧,这不起作用:-\ 问题答案: 最佳实践 如第一个答案的注释中所述,最佳实践是使用PHP常量PHP_EOL,它代表当前系统的EOL(行 尾 )。 警告 这些常数使您的页面系统独立,但是当将常数与存储在另一系统上的数据一起使用时,从一个系统移动到另一个系统时可能会遇到问题。新系统的常数可能与先前系统的常数不同,并且存储的数据可能不再起作用。因此,在存储数据之前先完全解析您的数

  • 问题内容: 我想做的是一项相当普通的任务,但我在网络上找不到任何参考。我的文字带有标点符号,我想要一个单词列表。 应该 但是只能使用一个参数,因此在用空格分割后,所有单词都带有标点符号。有任何想法吗? 问题答案: 正则表达式合理的情况: