PHP 用交替的字符串替换字符串

发布于 2024-10-14 07:16:47 字数 460 浏览 4 评论 0原文

我有一个类似这样的文本:

    $sText =    
    "www.domain.com
     www.domain.com
     www.domain.com
     www.domain.com
     www.domain.com
     ...";

现在我想将域传播到子域(例如 3 个子域),所以结果应该如下所示:

$aSubs = array("www.sub1.domain.com", "www.sub2.domain.com", "www.sub3.domain.com"); 
$sResult =
"www.sub1.domain.com
www.sub2.domain.com
www.sub3.domain.com
www.sub1.domain.com
www.sub2.domain.com
..."

感谢帮助...

I have a text something like this:

    $sText =    
    "www.domain.com
     www.domain.com
     www.domain.com
     www.domain.com
     www.domain.com
     ...";

Now I want to spread the domains to subdomains (e.g. 3 sub-domains), so the result should look like this:

$aSubs = array("www.sub1.domain.com", "www.sub2.domain.com", "www.sub3.domain.com"); 
$sResult =
"www.sub1.domain.com
www.sub2.domain.com
www.sub3.domain.com
www.sub1.domain.com
www.sub2.domain.com
..."

Thanks for help...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

扛刀软妹 2024-10-21 07:16:47

在您的替换回调中,执行类似的操作:

static $i = 0;
'www.' . ($i++ % 3 + 1) . '.domain.com';

我将把正则表达式写给您(因为您没有提供任何详细信息。)

PS:函数中的 static 关键字引用一个变量这是在多个函数调用之间维护的。

In your replace callback, do something similar to this:

static $i = 0;
'www.' . ($i++ % 3 + 1) . '.domain.com';

I'm leaving writing the regex to you (as you didn't give any details.)

PS: The static keyword in a function refers to a variable that is maintained between several function calls.

此生挚爱伱 2024-10-21 07:16:47

如果您有 PHP 5.3:

preg_replace_callback($sText, "#www\.domain\.com#", function() {
    static $index = 0;
    $subdomains = array(
        "www.sub1.domain.com",
        "www.sub2.domain.com",
        "www.sub3.domain.com",
        "www.sub1.domain.com",
        "www.sub2.domain.com",
    );
    return $subdomains[$index++ % count($subdomains)];
});

If you have PHP 5.3:

preg_replace_callback($sText, "#www\.domain\.com#", function() {
    static $index = 0;
    $subdomains = array(
        "www.sub1.domain.com",
        "www.sub2.domain.com",
        "www.sub3.domain.com",
        "www.sub1.domain.com",
        "www.sub2.domain.com",
    );
    return $subdomains[$index++ % count($subdomains)];
});
内心激荡 2024-10-21 07:16:47

这可以工作:

<?php
$count = 0;
$subdomains = array("www.sub1.domain.com", "www.sub2.domain.com", "www.sub3.domain.com");

$text = <<<XXX
www.domain.com
www.domain.com
www.domain.com
www.domain.com
www.domain.com
XXX;


function createSub($matches)
{
    global $subdomains,$count;
    $index = $count++ % count($subdomains);
    return $subdomains[$index];
}
echo preg_replace_callback(
            "#(www)(\..+)#m",
            "createSub",
            $text);     

This could work:

<?php
$count = 0;
$subdomains = array("www.sub1.domain.com", "www.sub2.domain.com", "www.sub3.domain.com");

$text = <<<XXX
www.domain.com
www.domain.com
www.domain.com
www.domain.com
www.domain.com
XXX;


function createSub($matches)
{
    global $subdomains,$count;
    $index = $count++ % count($subdomains);
    return $subdomains[$index];
}
echo preg_replace_callback(
            "#(www)(\..+)#m",
            "createSub",
            $text);     
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文