php – 我试图拆分/爆炸/ preg_split一个字符串,但我想保留分隔符
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – 我试图拆分/爆炸/ preg_split一个字符串,但我想保留分隔符,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1746字,纯文字阅读大概需要3分钟。
内容图文
![php – 我试图拆分/爆炸/ preg_split一个字符串,但我想保留分隔符](/upload/InfoBanner/zyjiaocheng/808/b1f1db893b6f4d35b9a1753033c0cef5.jpg)
我试图拆分/爆炸/ preg_split一个字符串,但我想保留分隔符示例:
explode('/block/', '/block/2/page/2/block/3/page/4');
预期结果 :
array('/block/2/page/2', '/block/3/page/4');
不确定我是否必须循环然后重新为数组值添加前缀或者是否有更简洁的方法.
我用PREG_SPLIT_DELIM_CAPTURE尝试了preg_split(),但我得到了以下内容:
array('/block/, 2/page/2', '/block/, 3/page/4');
这不是我想要的.任何帮助深表感谢.
解决方法:
您可以像这样使用preg_match_all:
$matches = array();
preg_match_all('/(\/block\/[0-9]+\/page\/[0-9]+)/', '/block/2/page/2/block/3/page/4', $matches);
var_dump( $matches[0]);
输出:
array(2) {
[0]=>
string(15) "/block/2/page/2"
[1]=>
string(15) "/block/3/page/4"
}
编辑:This是我用preg_split做的最好的.
$array = preg_split('#(/block/)#', '/block/2/page/2/block/3/page/4', -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
$result = array();
for( $i = 0, $count = count( $array); $i < $count; $i += 2)
{
$result[] = $array[$i] . $array[$i + 1];
}
如果仍然需要循环以添加分隔符,则使用正则表达式不值得花费.只需使用explode并自己添加分隔符:
$delimiter = '/block/'; $results = array();
foreach( explode( $delimiter, '/block/2/page/2/block/3/page/4') as $entry)
{
if( !empty( $entry))
{
$results[] = $delimiter . $entry;
}
}
最终编辑:解决了!以下是使用一个正则表达式,preg_split和PREG_SPLIT_DELIM_CAPTURE的解决方案
$regex = '#(/block/(?:\w+/?)+(?=/block/))#';
$flags = PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY;
preg_split( $regex, '/block/2/page/2/block/3/page/4', -1, $flags);
preg_split( $regex, '/block/2/page/2/order/title/sort/asc/block/3/page/4', -1, $flags);
输出:
array(2) {
[0]=>
string(15) "/block/2/page/2"
[1]=>
string(15) "/block/3/page/4"
}
array(2) {
[0]=>
string(36) "/block/2/page/2/order/title/sort/asc"
[1]=>
string(15) "/block/3/page/4"
}
内容总结
以上是互联网集市为您收集整理的php – 我试图拆分/爆炸/ preg_split一个字符串,但我想保留分隔符全部内容,希望文章能够帮你解决php – 我试图拆分/爆炸/ preg_split一个字符串,但我想保留分隔符所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。