regex / preg_replace替换子域

| 我需要使用preg_replace用单个元素替换两个子域元素。我的正则表达式技能几乎不存在。网址的格式为:
user1.common.domain.org
user2.common.domain.org
something.common.domain.org
else.common.domain.org
并且需要替换为:
newvalue.domain.org
    
已邀请:
        
preg_replace( \'/[a-z0-9]+\\.common/i\' , \'newvalue\' , $url );
    
        尝试这个:
preg_replace(\"/.+?(domain.+?)/\", \"newvalue.$1\", \"user1.common.domain.org\");
    
        使用正则表达式可能无法最好地解决此问题。尝试使用
explode()
$exploded = explode(\'.\', $hostname);
if( (count($exploded) == 4) and ($exploded[1] == \'common\') )
{
    $exploded[0] = \'newvalue\';
    unset($exploded[1]);
}

$hostname = implode(\'.\', $exploded);
(其中
$hostname
是您要检查的主机名[例如
$_SERVER[\'HTTP_HOST\']
] 上面的代码假定您要查找与模式
*.common.domain.org
匹配的主机名,并且该主机名将始终以
domain.org
结尾。     
        这将起作用:
$sd = \"user1.common.domain.org\";

$sd = preg_replace(\'/.*?\\.common\\.(domain\\.org)/i\', \'newvalue.$1\', $sd);

echo $sd ;
输出newvalue.domain.org     
        试试这个代码:
preg_replace(\'/\\w+\\.\\w+(?=\\.\\w+\\.\\w+)/i\', \'newvalue\', \'user1.common.domain.org\');
    
        仅当您可以确定它以domain.org结尾时才适用:
preg_replace(\'/(?:.*?)\\.(?:.*?)(\\.domain\\.org)/\', $new_val.\"$1\", $url);
    

要回复问题请先登录注册