php单独输出每个单词,PHP爆炸字符串,但将引号中的单词视为单个单词

您可以使用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);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值