You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP使用explode按空格拆分字符串时如何避免拆分引号内的内容

实现方案

直接使用preg_match_all匹配符合规则的字符串片段即可,正则可以自动跳过引号内部的空格:

<?php
$string = "[categoryhome section_title='Categories' column_1_title='Gift Certificates']";
// 匹配规则:引号包裹内容/非空格非引号的连续字符
preg_match_all('/(?:\'[^\']*\'|"[^"]*"|[^\s\'"])+/', $string, $matches);
$temp = $matches[0];

// 输出验证
print_r($temp);

输出结果

Array
(
    [0] => [categoryhome
    [1] => section_title='Categories'
    [2] => column_1_title='Gift Certificates']
)

正则说明

  • '[^']*':匹配单引号包裹的所有内容,包含内部空格
  • "[^"]*":匹配双引号包裹的所有内容,包含内部空格
  • [^\s'"]:匹配不属于空格、单引号、双引号的任意字符
  • 外层(?: ... )+:将上述任意规则的连续片段合并为一个匹配结果,?:表示不需要单独捕获括号内的内容
    如果需要兼容引号内部有转义引号的场景(比如'a\'b'这种格式),可以替换为如下正则:
preg_match_all('/(?:\'(?:\\\.|[^\'])*\'|"(?:\\\.|[^"])*"|[^\s\'"])+/', $string, $matches);

内容的提问来源于stack exchange,提问作者Benjoe Carandang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 01:24:03