作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试拆分/分解/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 一个字符串,但我想保留分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8303760/
使用登录后,我想吐出用户名。 但是,当我尝试单击登录按钮时, 它给了我力量。 我看着logcat,但是什么也没显示。 这种编码是在说。 它将根据我在登录屏幕中输入的名称来烘烤用户名。 不会有任何密码。
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎是题外话,因为它缺乏足够的信息来诊断问题。 更详细地描述您的问题或include a min
我是一名优秀的程序员,十分优秀!