echo preg_replace("/^http:\/\/([^\/]+)\//i","\\1",$url);
在PHP中的语法是这样的
在 javascript 中才是用 $1

解决方案 »

  1.   

    你可试下这个函数,手册上的: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] => /

     
      

  2.   

    php从4.1*开始可以使用$i代替\\i,不是这个问题
    对于parse_url,很可惜,它不是我要的东西:(
      

  3.   

    很明显是匹配了,不然怎么会把http://community.csdn.net/替换成community.csdn.net
    你是要取其中的一部分,不是把其中的一部分替换
      

  4.   

    echo preg_replace("/^http:\/\/([^\/]+?)\/.*/i","$1",$url);
      

  5.   

    手册上的例子:<?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";
    ?>