-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