【问题标题】:php regex split string by [%%%]php 正则表达式拆分字符串 [%%%]
【发布时间】:2011-06-05 22:17:48
【问题描述】:

您好,我需要一个 preg_split 正则表达式,它将在方括号中的子字符串处拆分字符串。

这个示例输入:

$string = 'I have a string containing [substrings] in [brackets].';

应该提供这个数组输出:

[0]= 'I have a string containing '
[1]= '[substrings]'
[2]= ' in '
[3]= '[brackets]'
[4]= '.'

【问题讨论】:

  • @John,不明白你的问题。你能更清楚一点吗?放一点代码来看看你尝试了什么也是一个好习惯。
  • 您能否提供更多示例来说明这些 % 可能是什么?可能不是?
  • 嗯,你的意思是 literal [] 介于两者之间吗? (我怀疑很多混乱可能源于此......)
  • 所以可能类似于... $result = preg_split('/\\s*\[[^\]]{3,}\]\\s*/',$string) 其中还将考虑 [] 的任一侧的空格或更类似于 preg_split('/(\[|\])/',$string) 来获取您的上述数组?

标签: php regex


【解决方案1】:

阅读您修改后的问题后:

这可能是你想要的:

$string = 'I have a string containing [substrings] in [brackets].';
preg_split('/(\[.*?\])/', $string, null, PREG_SPLIT_DELIM_CAPTURE);

你应该得到:

Array
(
    [0] => I have a string containing 
    [1] => [substrings]
    [2] =>  in 
    [3] => [brackets]
    [4] => .
)

原答案:

preg_split('/%+/i', 'ot limited to 3 %%% so it can be %%%% or % or %%%%%, etc Tha');

你应该得到:

Array
(
    [0] => ot limited to 3 
    [1] =>  so it can be 
    [2] =>  or 
    [3] =>  or 
    [4] => , etc Tha
)

或者,如果您想要至少 3 个,请尝试:

preg_split('/%%%+/i', 'Not limited to 3 %%% so it can be %%%% or % or %%%%%, etc Tha');

试试http://regex.larsolavtorvik.com/

【讨论】:

    【解决方案2】:

    我想这就是你要找的:

    $array = preg_split('/(\[.*?\])/', $string, null, PREG_SPLIT_DELIM_CAPTURE);
    

    【讨论】:

    • 你的意思是preg_split('/(\[.*?\])/', $string, null, PREG_SPLIT_DELIM_CAPTURE);
    • 你也需要括号()
    • 好吧,不知道那个。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-19
    • 2011-06-18
    • 2011-10-16
    相关资源
    最近更新 更多