如何使用转义字符拆分以空格分隔的标记字符串?

时间:2014-01-23 21:07:42

标签: php regex

我需要将像hey 'this is' some text这样的空格分隔的字符串标记为数组['hey', 'this is', 'some', 'text'](单引号字符是转义字符)。

到目前为止我所拥有的内容将在空格上分割,但它没有包含必要的转义字符。

$tokens = preg_split('/[\ \n\,]+/', $whitespaceDelimitedString);

正则表达忍者,出来!!拜托,谢谢。

2 个答案:

答案 0 :(得分:5)

您可以使用此代码:

$s = "hey 'this is' some text";
$a = preg_split("/'([^']*)'\s*|\s+/", $s, 0, PREG_SPLIT_DELIM_CAPTURE|PREG_SPLIT_NO_EMPTY);
print_r($a);

输出:

Array
(
    [0] => hey
    [1] => this is
    [2] => some
    [3] => text
)

答案 1 :(得分:3)

内置PHP功能:str_getcsv() http://www.php.net/manual/en/function.str-getcsv.php

所以这个简单的代码:

<?php

$string = "hey 'this is' some text";

$output = str_getcsv ( $string, ' ', "'");

print_r($output);

...将输出:

Array
(
    [0] => hey
    [1] => this is
    [2] => some
    [3] => text
)