PHP str_ireplace只替换一次


PHP str_ireplace only once

我正在寻找str_ireplace(不区分大小写)的修改版本,它只会替换一次。

我在网上读到它可以与妊娠或其他技术,但我正在寻找一个通用的功能,我可以重用。

好处:它的用途是在单词周围添加一个链接锚标记,所以如果它能以某种方式保持原始单词的大写,那就太好了。

听起来你肯定想要preg_replace()。如果你愿意,你可以创建一个用户定义的函数:

function put_in_link($str)
{
    return preg_replace('/(linkText)/i', '<a href="/linkHref">$1</a>', $str, 1);
}

但是没有理由这样做,而不是preg_replace()。这个呼叫实际上并不比str_ireplace()呼叫复杂。

最后一个参数是为限制出现1次而添加的

PHP是一种编程语言。像使用工具一样使用它。例如,PHP附带的函数并没有涵盖你的所有基础。但是,您可以将现有函数组合成一个新函数。这很好。

底线是,你自己写了一个函数,它有缺失的功能(你可以稍后改变函数的内部,你只需要注意它的行为和以前完全一样)。

这是一个示例函数,实际上是通过使用stripossubstr_replace (Demo)来做你正在寻找的东西:

function str_ireplace_once($search, $replace, $subject, &$count = 0)
{
    $pos = stripos($subject, $search);
    if (false === $pos)
        return $subject;
    $count = 1;
    return substr_replace($subject, $replace, $pos, strlen($search));
}

不要对速度做任何假设,除非对你来说真的是问题。但是不要再猜测它是否存在了。先解决自己的问题,不要凭空制造新的问题。

$text;
$word;
$replacement;
$text = substr_replace(
            $text, 
            $replacement,
            stripos($text, $word),
            strlen($word));

应该工作http://ideone.com/iIKbV