2011-08-28 31 views
0

我正在尋找將替換隻有一次的str_ireplace(不區分大小寫)的修改版本。PHP str_ireplace只有一次

我在線閱讀,它可以與preg或其他技術可行,但我正在尋找一個通用函數,我可以重複使用。

獎金:用法是在單詞周圍添加一個鏈接錨點標記,所以如果能夠以某種方式保留原始單詞的大寫字母會很好。

+2

是什麼讓你無法包裝的preg_replace信息用戶定義的函數,你可以再利用? –

+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次出現。

+0

preg_replace比str_ireplace慢嗎? –

+0

另外我假設你忘記了「,1」作爲限制的最後一個參數 –

+0

str_replace通常應該比preg_replace更快(沒有正在處理的正則表達式) – Aknosis

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

而且不要做出任何速度的假設,除非它是真的問題您。但不要猜測它是否是。首先解決你的問題,不要創造額外的問題。