我正在寻找一个仅替换ON ON ONCE的str_ireplace(不区分大小写)的修改版本。
我在网上看到它可以使用preg或其他技术,但我正在寻找一个可以重复使用的通用函数。
奖励:用法是在单词周围添加一个链接锚标记,所以如果它能以某种方式保留原始单词的大写,那就太好了。
答案 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附带的功能并不涵盖您的所有基础。但是,您可以将现有功能组合到一个新功能中。这非常有效。
最重要的是,你自己编写了一个具有缺失功能的函数(你可以稍后更改函数的内部,你只需要注意它的行为与之前完全相同)。
这是一个使用stripos
和substr_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));
}
不要对速度做任何假设,除非它真的对你来说是一个问题。但不要再猜测它是否存在。首先解决您的问题,不要突然创建其他问题。
答案 2 :(得分:0)
$text;
$word;
$replacement;
$text = substr_replace(
$text,
$replacement,
stripos($text, $word),
strlen($word));
应该工作