免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2743 | 回复: 5
打印 上一主题 下一主题

求一个取子字符串的写法,好象很难。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-09-08 12:21 |只看该作者 |倒序浏览
求一个取子字符串的写法,好象很难。
要求:
比如从字符串http://www.abc.com/ddd/a.htm取出http://www.abc.com
比如从字符串ftp://www.abc.com/取出ftp://www.abc.com

也就是第三个"/"这前的所有字符串,试了很长时间都没搞定,还请大家赐教。

论坛徽章:
0
2 [报告]
发表于 2007-09-08 12:35 |只看该作者
不用 PCRE

#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// PHP CODE Highliting for CU by dZ902


<?php
$s
= 'http://www.abc.com/ddd/a.htm';
$r = '';

$i = $j = 0;
while (
$j < 3) {
   
$r .= $s[$i];

    if (
$s[$i] == '/') {
        ++
$i;
        ++
$j;
    } else {
        ++
$i;
    }
}

echo
$r;
?>


用 PCRE

#
1
2
3
4
5
6
7
8
9
// PHP CODE Highliting for CU by dZ902


<?
$s
= 'ftp://www.abc.com/ddd/a.htm';

preg_match('#(?:https?|ftp)://[^/]+#', $s, $r);

var_dump($r);
?>

论坛徽章:
0
3 [报告]
发表于 2007-09-08 13:42 |只看该作者
谢谢指教,还是第二种方法好一些,问题是,如果是象这样的字符串,如何取?
‘任意前缀://www.abc.com/ddd/a.htm’,其中任意前缀不含'://''’,如何取得
任意前缀://www.abc.com

论坛徽章:
0
4 [报告]
发表于 2007-09-08 13:51 |只看该作者
#
1
2
3
4
5
6
7
// PHP CODE Highliting for CU by dZ902


<?
preg_match
('#[^:/]+?://[^/]+#', $s, $r);

var_dump($r);
?>


能不能给 10 分?

论坛徽章:
0
5 [报告]
发表于 2007-09-08 14:30 |只看该作者
怎么给积分啊?不会操作。给了一个鲜花。再次感谢。

[ 本帖最后由 hh11 于 2007-9-8 14:39 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2007-09-08 15:28 |只看该作者
不用谢,给积分请到清茶斋发帖悬赏即可~

地址:http://bbs.chinaunix.net/forumdisplay.php?fid=31
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP