PHP:使用preg_split()

时间:2014-05-02 12:11:19

标签: php regex

我有这样的字符串:

wh4tever_(h4r4ct3rs +syMb0|s! ASC
wh4tever_(h4r4ct3rs +syMb0|s! DESC

我不知道第一个字符是什么,但我知道它们以' ASC'' DESC'结束,我想拆分它们以便我得到一个像:< / p>

array(
    [0] => 'wh4tever_(h4r4ct3rs +syMb0|s!'
    [1] => 'ASC' //or 'DESC'
)

我知道使用preg_split()一定非常容易,但我认为正则表达式是我永远不会与之相处的......

3 个答案:

答案 0 :(得分:3)

您可以将以下正则表达式与preg_split()

一起使用
\s(?=(ASC|DESC))

<强>解释

  • \s - 匹配任何空格字符
  • (?= - 开始积极前瞻
    • (ASC|DESC) - ASCDESC
  • ) - 结束了积极向前看

<强>可视化:

enter image description here

<强>完整

$str = 'wh4tever_(h4r4ct3rs +syMb0|s! ASC';
$arr = preg_split('/\s(?=(ASC|DESC))/', $str);
print_r($arr);

<强>输出:

Array
(
    [0] => wh4tever_(h4r4ct3rs +syMb0|s!
    [1] => ASC
)

Demo

答案 1 :(得分:3)

试试这个,

$str = "wh4tever_(h4r4ct3rs +syMb0|s! ASC";
$str1 = "wh4tever_(h4r4ct3rs +syMb0|s! ASC";


$ar = preg_split('/(ASC|DESC)/i', $str, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
$ar1 = preg_split('/(ASC|DESC)/i', $str1, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);

print_r($ar);
print_r($ar1);

输出: 数组([0] =&gt; wh4tever_(h4r4ct3rs + syMb0 | s![1] =&gt; ASC) 数组([0] =&gt; wh4tever_(h4r4ct3rs + syMb0 | s![1] =&gt; DESC)

答案 2 :(得分:2)

您可以使用此正则表达式:

\s(?=(A|DE)SC)

并拆分它。

正如sshashank124所指出的,它是一种非常好的工具,它与语言无关。