正则替换问题

longsi 2005-09-28 01:34:34
对一个URL,我想取得其第一个/前得部分,比如http://community.csdn.net/Expert/PostNew.asp,我希望得到community.csdn.net,所以用了一个这样得方法:
echo preg_replace("/^http:\/\/([^\/]+)\//i","$1",$url);结果得到的还是一个很奇怪的东西,类似于community.csdn.netExpert/,
然后我试图使用
preg_match("/^http:\/\/([^\/]+)\//i",$url,$regs);
echo $regs[1];
得到了我想要的东西,这让我非常困惑
为什么第一个preg_replace没有正确匹配而第二个却匹配上了?
...全文
107 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
longsi 2005-09-30
  • 打赏
  • 举报
回复
oh,我知道了。犯了一个低级错误,让大家见笑了。
Meteorlet 2005-09-29
  • 打赏
  • 举报
回复
echo preg_replace("/^http:\/\/([^\/]+?)\/.*/i","$1",$url);
Meteorlet 2005-09-29
  • 打赏
  • 举报
回复
很明显是匹配了,不然怎么会把http://community.csdn.net/替换成community.csdn.net
你是要取其中的一部分,不是把其中的一部分替换
Gdj 2005-09-29
  • 打赏
  • 举报
回复
楼上说的是。有什么好困惑的。一个是替换一个是匹配。结果完全正确。
  • 打赏
  • 举报
回复
手册上的例子:

<?php
// 从 URL 中取得主机名
preg_match("/^(http:\/\/)?([^\/]+)/i",
"http://www.php.net/index.html", $matches);
$host = $matches[2];

// 从主机名中取得后面两段
preg_match("/[^\.\/]+\.[^\.\/]+$/", $host, $matches);
echo "domain name is: {$matches[0]}\n";
?>
longsi 2005-09-28
  • 打赏
  • 举报
回复
php从4.1*开始可以使用$i代替\\i,不是这个问题
对于parse_url,很可惜,它不是我要的东西:(
lantersen 2005-09-28
  • 打赏
  • 举报
回复
你可试下这个函数,手册上的:Lucky for U!

parse_url
(PHP 3, PHP 4 )

parse_url -- 解析 URL,返回其组成部分
描述
array parse_url ( string url)


此函数返回一个关联数组,包含现有 URL 的各种组成部分。如果缺少了其中的某一个,则不会为这个组成部分创建数组项。组成部分为:


scheme - 如 http

host

port

user

pass

path

query - 在问号 ? 之后

fragment - 在散列符号 # 之后


此函数并 不 意味着给定的 URL 是合法的,它只是将上方列表中的各部分分开。parse_url() 可接受不完整的 URL,并尽量将其解析正确。

注: 此函数对相对路径的 URL 不起作用。

例子 1. parse_url() 示例

$ php -r 'print_r( parse_url("http://username:password@hostname/path?arg=value#anchor"));'
Array
(
[scheme] => http
[host] => hostname
[user] => username
[pass] => password
[path] => /path
[query] => arg=value
[fragment] => anchor
)

$ php -r 'print_r( parse_url("http://invalid_host..name/"));'
Array
(
[scheme] => http
[host] => invalid_host..name
[path] => /
)

faisun 2005-09-28
  • 打赏
  • 举报
回复
echo preg_replace("/^http:\/\/([^\/]+)\//i","\\1",$url);
在PHP中的语法是这样的
在 javascript 中才是用 $1

21,891

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧