php버전문제로인한 익명함수 에러문제입니다..
본문
기존에 xe보드로 만들어진 홈페이지를 저희쪽에 옮기고 있는데
php가 5.2버전이라 익명함수가 인식되지못해서 에러가난다고 합니다.
$attrs = array();
if(preg_match_all('/([\w:-]+)\s*=(?:\s*(["\']))?(?(2)(.*?)\2|([^ ]+))/s', $match[3], $m))
{
foreach($m[1] as $idx => $name)
{
if(strlen($name) >= 2 && substr_compare($name, 'on', 0, 2) === 0)
{
continue;
}
$val = preg_replace_callback('/(?:x([a-fA-F0-9]+)|0*(\d+));/', function($n) {return chr($n[1] ? ('0x00' . $n[1]) : ($n[2] + 0)); }, $m[3][$idx] . $m[4][$idx]);
$val = preg_replace('/^\s+|[\t\n\r]+/', '', $val);
if(preg_match('/^[a-z]+script:/i', $val))
{
continue;
}
$attrs[$name] = $val;
}
}
$val = preg_replace_callback('/(?:x([a-fA-F0-9]+)|0*(\d+));/', function($n) {return chr($n[1] ? ('0x00' . $n[1]) : ($n[2] + 0)); }, $m[3][$idx] . $m[4][$idx]);
이부분인것 같은데 어떻게 수정해야할지를 잘 모르겠습니다.. 기존에 그누보드만 써본 초보라;;
조언부탁드립니다.
!-->답변 2
이렇게 테스트해 볼수 있습니다.
<?php
$match = array('', '', '', '<div class="abc" data-a=\'def\'>123</div>');
function cb_00($n) {return chr($n[1] ? ('0x00' . $n[1]) : ($n[2] + 0)); }
$attrs = array();
if(preg_match_all('/([\w:-]+)\s*=(?:\s*(["\']))?(?(2)(.*?)\2|([^ ]+))/s', $match[3], $m))
{
foreach($m[1] as $idx => $name)
{
if(strlen($name) >= 2 && substr_compare($name, 'on', 0, 2) === 0)
{
continue;
}
//$val = preg_replace_callback('/(?:x([a-fA-F0-9]+)|0*(\d+));/', function($n) {return chr($n[1] ? ('0x00' . $n[1]) : ($n[2] + 0)); }, $m[3][$idx] . $m[4][$idx]);
$val = preg_replace_callback('/(?:x([a-fA-F0-9]+)|0*(\d+));/', 'cb_00', $m[3][$idx] . $m[4][$idx]);
$val = preg_replace('/^\s+|[\t\n\r]+/', '', $val);
if(preg_match('/^[a-z]+script:/i', $val))
{
continue;
}
$attrs[$name] = $val;
}
}
print_r($m);
?>
https://www.php.net/manual/en/function.preg-replace-callback.php
(PHP 4 >= 4.0.5, PHP 5, PHP 7, PHP 8)
함수를 따로 빼고
파라미터로 함수 이름을 넣어 보세요.
답변을 작성하시기 전에 로그인 해주세요.