-1
$data = 'this is appLe and ApPle';
$search = 'apple';
//例如,一個想使用$search
如何陣列用許多話$search = array("apple","pear")
$replace = 'pear';
// $replace = array("pen","pupil")
PHP:如何正確創建數組版本這個函數?
如何轉換這個函數使用數組的話在$搜索和$替換?
$data = preg_replace_callback('/\b'.$search.'\b/i', function($matches) use ($replace)
{
$i=0;
return join('', array_map(function($char) use ($matches, &$i)
{
return ctype_lower($matches[0][$i++])?strtolower($char):strtoupper($char);
}, str_split($replace)));
}, $data);
工作正常,但有一個問題。當我輸入** Pear **時,腳本工作有點不正確,迴應給出** PupiL **而不是**瞳孔**。這是爲什麼發生?如何糾正?以及如何使這個腳本工作,並在其他編碼例如** Cyrillici **? – Otabek
我想你只是在* this *問題中添加數組支持。如果你有另一個,請隨時問。但是,這裏有個提示:爲了在這裏啓用Unicode字符串處理,在正則表達式中添加一個'u'修飾符(''/ \ b(?:'。implode(「|」,array_keys($ arr))。')\ b/iu';')並用'mb_strto ...'替換所有的'strto ...'。 'ctype_lower'也可以用'preg_match('〜^ \ p {Ll} + \ z〜u',$ m)'替換。 –
'$ data ='亞歷克斯家裏有很多貓。'; $ search = array(「apple」,「pear」,「alex」); $ replace = array(「pen」,「pupil」,「александр」); $ search = array_map(「utf8_encode」,$ search); $ replace = array_map(「utf8_encode」,$ replace); $ arr = array_combine($ search,$ replace); $ arr = array_map(「utf8_encode」,$ arr);' – Otabek