-1
$data = 'this is appLe and ApPle';
$search = 'apple';
// 예를 들어 찾는이 $search
을 사용하는 방법 많은 단어 $search = array("apple","pear")
// $replace = array("pen","pupil")
PHP : 배열 버전을 올바르게 작성하는 방법은 무엇입니까?
$replace = 'pear';
와 배열 방법 $ 검색에서 배열 단어를 사용하고 $ 대체하는이 기능을 변환?
$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);
잘 작동하지만 한 가지 문제가 있습니다. ** 배 **를 입력하면 스크립트가 약간 잘못 작동하고 응답으로 ** PupiL ** 및 ** Pupil **이 표시됩니다. 왜 이런 일이 일어나는 걸까요? 어떻게이 문제를 해결할 수 있습니까? 그리고이 스크립트가 ** Cyrillici **와 같은 다른 코드 작성에서 작동하도록 만드는 방법은 무엇입니까? – Otabek
*이 * 질문에 배열 지원 만 추가 할 것을 요청했다고 생각합니다. 다른 사람이 있으시면 언제든지 물어보십시오. 여기에 힌트가 있습니다 : 유니 코드 문자열 처리를 활성화하려면 regex (' '/ \ b (?: implode ("|, array_keys ($ arr)))에'u' 수정자를 추가하십시오. b/iu ';') 그리고'strto ...'를'mb_strto ... '로 대체하십시오. 'ctype_lower'는'preg_match ('~^\ p {Ll} + \ z ~ u', $ m)'로 바꿀 수 있습니다. –
$ data = 'Alex는 집에 고양이가 많습니다.'; $ 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