저는 CakePHP 1.3.7을 사용 중이며 매우 구체적인 문제가 있습니다.CakePHP 1.3 경고 array_merge sanitize
내 응용 프로그램에서 사용되는 Sanitize 핵심 클래스 메서드는 버전 1.2 중 하나입니다. /usr/share/php/cake/libs/sanitize.php에 의 배열을 인수 # 2되지 않습니다
경고 : array_merge() 나는 특정 데이터를 저장할 때, 나에게 경고를 제공 줄 113
하지만 올바른 인코딩/형식으로 저장합니다. 여기
이 경고의 원인이되는 방법이다 (라인 113에없는 버전 1.2,하지만 난 나중에 올거야)function html($string, $remove = false) {
if ($remove) {
$string = strip_tags($string);
} else {
$patterns = array("/\&/", "/%/", "/</", "/>/", '/"/', "/'/", "/\(/", "/\)/", "/\+/", "/-/");
$replacements = array("&", "%", "<", ">", """, "'", "(", ")", "+", "-");
$string = preg_replace($patterns, $replacements, $string);
}
return $string;
}
을 그리고 여기,이 메소드가 호출 방법
$value = Sanitize::html($value,true);
지금은 1.3 버전에서 html로() 메소드를 대체하는 경우가 있지만, array_merge()가이 방법으로 호출되지 않습니다 볼 수
function html($string, $options = array()) {
static $defaultCharset = false;
if ($defaultCharset === false) {
$defaultCharset = Configure::read('App.encoding');
if ($defaultCharset === null) {
$defaultCharset = 'UTF-8';
}
}
$default = array(
'remove' => false,
'charset' => $defaultCharset,
'quotes' => ENT_QUOTES
);
$options = array_merge($default, $options);
if ($options['remove']) {
$string = strip_tags($string);
}
return htmlentities($string, $options['quotes'], $options['charset']);
}
array_merge()는 정확히
내가 지금은 더 이상 경고를하지 않는이 방법을() HTML
$value = Sanitize::html($value,array('remove' => true));
를 호출 할 경우 라인 (113)에 떨어진다. 그러나 내 데이터는 더 이상 올바른 인코딩/형식으로 저장되지 않습니다. 여기
내가L' ENVOI 디부 UNE 통신 & 일품 인 Fenetre
내가 할 수있는 '(이 UTF-8 인코딩 프랑스어이며 필요) 저장해야하는 텍스트의 예 t 내가 이렇게 내가 상수 ENT_HTML401
을 사용할 수 없습니다 PHP 5.3.6을 사용하고 있기 때문에이$value = Sanitize::html($value,array('remove' => true, 'quotes' => ENT_HTML401));
을하고 극복
ENT_NOQUOTES와 같은 다른 상수를 사용하면 따옴표 (명백하게)가 무시되지만 프랑스어 악센트와 다른 특수 문자는 무시됩니다.이 방법으로 작동하도록 의도되었지만 인용 된 것과 똑같은 텍스트를 저장하려고합니다 (또는 적어도 읽어).
나는 htmlentities를 사용할 필요가 없다고 생각하지만, 핵심 방법을 업데이트하는 것이 더 안전하다고 생각합니다. 경고를받지 못하는 유일한 방법입니다. 또한이 파일을 업데이트하는 것 이외의 다른 파일을 수정해서는 안된다고 가정합니다.
그래서, 간단하게, 내가 원하는 에 :
- 이
- 저장/오른쪽 형식으로
, 감사
데이터를 읽어 경고 제거하기