考虑以下.我在{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 举报,一经查实,本站将立刻删除。