首页 > 后端开发 > php教程 > 使用PHP的explode()时如何将引用的文本保留为单个单词?

使用PHP的explode()时如何将引用的文本保留为单个单词?

Mary-Kate Olsen
发布: 2024-12-07 13:01:12
原创
431 人浏览过

How to Preserve Quoted Text as Single Words When Using PHP's explode()?

在 PHPexplode 中将引用的单词视为单个单词

我们如何使用explode()分解字符串,如下所示将引用的文本保留为单个单词?

Lorem ipsum "dolor sit amet" consectetur "adipiscing elit" dolor
登录后复制

预期输出:

["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);
登录后复制

这种精炼的语法甚至可以处理带引号的短语中的转义引号。

正则表达式细分:

"(?:         # Start non-capture group 1
  \        #   Match backslash character
  .         #   Match any character except line breaks
  |         #   Or
  [^\"]    #   Match any character except backslash and double quotes
)*          # End non-capture group 1 and repeat it zero or more times
"           # Match double quotes
|           # Or
\S+         # Match one or more non-whitespace characters
登录后复制

处理“而不是 Double引号:

如果需要处理 " 代替双引号,请使用此调整后的正则表达式:

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

以上是使用PHP的explode()时如何将引用的文本保留为单个单词?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板