哦,這個男孩這是一個奇怪的。那麼我有一個數組與密鑰值的圖像數組。帶限制參數的str_replace
$smiles = array(':)' => 'http://www.example.com/happy.png', ':(' => 'http://www.example.com/sad.png');
,然後我有一個文本輸入:that's sad to hear :(, but also great that you go a new dog :)
我可以分析整個陣列,通過str_replace函數代替,但我想每個消息4個表情符號的限制。
我的舊(無限制):
function addSmilies($text){
global $smilies;
foreach($smilies as $key => $val)
{
$search[] = $key;
$replace[] = '<img src="' . $val . '" alt="' . $key . '" />';
}
$text = str_replace($search, $replace, $text);
return $text;
}
我知道你可以使用的preg_replace,而且有一個限制,但我可怕與正則表達式,不能讓他們做我想做的。所以回到我的問題。是否有一個str_replace與數組的限制,或者我應該堅持preg_replace?
更新:我想過剝離:)和:(第一之前,我更換實際標記
function addSmilies($text){
global $smilies;
foreach($smilies as $key => $val)
{
$search[] = $key;
$replace[] = '<img src="' . $val . '" alt="' . $key . '" />';
}
$limit = 4;
$n = 1;
for($i=0; $i<count($search); $i++)
{
if($n >= $limit)
break;
if(strpos($text, $search[$i]) === false)
continue;
$tis = substr_count($text , $search[$i]); //times in string
$isOver = ($n + $tis > $limit) ? true : false;
$count = $isOver ? ($limit - $n) : $tis;
$f = 0;
while (($offset = strpos($text, $search[$i])) !== false)
{
if($f > $count)
$text = substr_replace($text, "", $offset, strlen($search[$i]));
$f++;
}
$n += $tis;
}
$text = str_replace($search, $replace, $text);
return $text;
}
但現在沒有圖像會不惜一切!?
'str_replace()'有第四個參數叫'&$ count'。有什麼阻止你使用這個參數? Ref .: http://www.php.net/manual/en/function.str-replace.php – Bjoern
@Bjoern剛剛介紹過嗎? – MysteryDev
'$ count'參數返回字符串被替換的次數,它不是您可以設置的限制。 – ironcito