微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 在标签上拆分字符串,删除空结果

考虑以下.我在{tags}上拆分了一个字符串,这些字符串是大括号,它们之间有任意数量的字符(和/或数字):

$string = "Lorem {FOO} ipsum {BAR} dolor {FOO:bar} samet";
$temp   = preg_split('/(\{.*?\})/', $string, -1, PREG_SPLIT_DELIM_CAPTURE);

结果数组($temp)是:

Array (
  [0] => Lorem [1] => {FOO} [2] => ipsum [3] => {BAR} 
  [4] => dolor [5] => {FOO:bar} [6] => samet
)

但是,如果$string以标记结尾,例如:

$string = "Lorem {FOO} ipsum {BAR} dolor {FOO:bar}";

然后生成的数组($temp)包含一个空元素(在这种情况下为#6):

Array (
  [0] => Lorem [1] => {FOO} [2] => ipsum [3] => {BAR} 
  [4] => dolor [5] => {FOO:bar} [6] =>
)

显然,这可以通过检查空值来删除,但在我看来,这不是最优雅的方式.是否有一个替代方案(每个正则表达式可能?)在结果数组中没有空元素开头?

解决方法:

是的,使用标志PREG_SPLIT_NO_EMPTY,如下所示:

$string = "Lorem {FOO} ipsum {BAR} dolor {FOO:bar}";
$arr = preg_split('/(\{.*?\})/', $string, 0, 
                  PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY );
print_r($arr);

OUTPUT:

Array
(
    [0] => Lorem 
    [1] => {FOO}
    [2] =>  ipsum 
    [3] => {BAR}
    [4] =>  dolor 
    [5] => {FOO:bar}
)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐