나는 주말 내내 preg_replace
으로 약간 일하고 있었고 나는 이상한 것을 보았을 때 Php preg_replace
documentation을 읽고 있었다.배열로 호출 된 preg_replace()에 미리 ksort()가 필요합니까? 응?
워드 프로세서에서 예 # 2 다음 PHP 코드
<?php
$string = 'The quick brown fox jumped over the lazy dog.';
$patterns[0] = '/quick/';
$patterns[1] = '/brown/';
$patterns[2] = '/fox/';
$replacements[2] = 'bear';
$replacements[1] = 'black';
$replacements[0] = 'slow';
echo preg_replace($patterns, $replacements, $string);
?>
에게 주어 졌을 때 출력이
"The bear black slow jumped over the lazy dog."
출력해야한다 (제 생각에) 무엇을 생성하기 위해 될 것으로 보여 기본적으로 ksort()
에 미리 전화해야합니다. 같은 :
<?php
ksort($patterns);
ksort($replacements);
echo preg_replace($patterns, $replacements, $string);
?>
이 정말 해결 방법 PHP의
preg_replace()
의 버그에 대한 아닌가? 왜 PHP는 이런 식으로 행동합니까? 내가 여기 없다고 선언 한 배열에 특이한 점이 있습니까?
다른 해결책은 먼저 실행하는 배열을 생성 array_fill (0,3, NULL)이다 0-> NULL 1-> NULL, 2-> NULL, 3-> NULL 이들 요소에 대한 모든 수정 ()는이 주문을 유지합니다. 그러나 일반적으로 ksort가 아마도 최선의 선택 일 것입니다. – MindStalker