我正在尋找將替換隻有一次的str_ireplace(不區分大小寫)的修改版本。PHP str_ireplace只有一次
我在線閱讀,它可以與preg或其他技術可行,但我正在尋找一個通用函數,我可以重複使用。
獎金:用法是在單詞周圍添加一個鏈接錨點標記,所以如果能夠以某種方式保留原始單詞的大寫字母會很好。
我正在尋找將替換隻有一次的str_ireplace(不區分大小寫)的修改版本。PHP str_ireplace只有一次
我在線閱讀,它可以與preg或其他技術可行,但我正在尋找一個通用函數,我可以重複使用。
獎金:用法是在單詞周圍添加一個鏈接錨點標記,所以如果能夠以某種方式保留原始單詞的大寫字母會很好。
這聽起來像你絕對想要preg_replace()
。如果你想,你可以創建一個用戶定義的函數:
function put_in_link($str)
{
return preg_replace('/(linkText)/i', '<a href="/linkHref">$1</a>', $str, 1);
}
但那種沒有理由這樣做,而不是preg_replace()
。這個電話實際上並不比str_ireplace()
呼叫複雜。
添加了最後一個參數,以限制1次出現。
preg_replace比str_ireplace慢嗎? –
另外我假設你忘記了「,1」作爲限制的最後一個參數 –
str_replace通常應該比preg_replace更快(沒有正在處理的正則表達式) – Aknosis
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));
}
而且不要做出任何速度的假設,除非它是真的爲問題您。但不要猜測它是否是。首先解決你的問題,不要創造額外的問題。
$text;
$word;
$replacement;
$text = substr_replace(
$text,
$replacement,
stripos($text, $word),
strlen($word));
應工作
是什麼讓你無法包裝的preg_replace信息用戶定義的函數,你可以再利用? –
我的回答錯了,對不起,刪除 –