PHP str_ireplace只有一次

时间:2011-08-28 07:32:58

标签: php regex string

我正在寻找一个仅替换ON ON ONCE的str_ireplace(不区分大小写)的修改版本。

我在网上看到它可以使用preg或其他技术,但我正在寻找一个可以重复使用的通用函数。

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

3 个答案:

答案 0 :(得分:1)

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

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

但是没有理由这样做而不是preg_replace()。此调用实际上并不比str_ireplace()调用复杂。

添加了最后一个参数以限制为1次。

答案 1 :(得分:0)

PHP是一种编程语言。像工具一样使用它。例如。 PHP附带的功能并不涵盖您的所有基础。但是,您可以将现有功能组合到一个新功能中。这非常有效。

最重要的是,你自己编写了一个具有缺失功能的函数(你可以稍后更改函数的内部,你只需要注意它的行为与之前完全相同)。

这是一个使用stripossubstr_replaceDemo)实际执行您所需要的功能的示例函数:

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));
}

不要对速度做任何假设,除非它真的对你来说是一个问题。但不要再猜测它是否存在。首先解决您的问题,不要突然创建其他问题。

答案 2 :(得分:0)

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

应该工作

http://ideone.com/iIKbV