0
我有升級後此錯誤到PHP 7.1和更新WordPress的核心:非數值遇到值誤差在PHP 7.1升級WordPress的核心之後
PHP警告:/遇到非數值WP-包括/了SimplePie /解析/ Date.php上線694
這裏
public function date_w3cdtf($date)
{
static $pcre;
if (!$pcre)
{
$year = '([0-9]{4})';
$month = $day = $hour = $minute = $second = '([0-9]{2})';
$decimal = '([0-9]*)';
$zone = '(?:(Z)|([+\-])([0-9]{1,2}):?([0-9]{1,2}))';
$pcre = '/^' . $year . '(?:-?' . $month . '(?:-?' . $day . '(?:[Tt\x09\x20]+' . $hour . '(?::?' . $minute . '(?::?' . $second . '(?:.' . $decimal . ')?)?)?' . $zone . ')?)?)?$/';
}
if (preg_match($pcre, $date, $match))
{
/*
Capturing subpatterns:
1: Year
2: Month
3: Day
4: Hour
5: Minute
6: Second
7: Decimal fraction of a second
8: Zulu
9: Timezone ±
10: Timezone hours
11: Timezone minutes
*/
// Fill in empty matches
for ($i = count($match); $i <= 3; $i++)
{
$match[$i] = '1';
}
for ($i = count($match); $i <= 7; $i++)
{
$match[$i] = '0';
}
// Numeric timezone
if (isset($match[9]) && $match[9] !== '')
{
$timezone = $match[10] * 3600;
$timezone += $match[11] * 60;
if ($match[9] === '-')
{
$timezone = 0 - $timezone;
}
}
else
{
$timezone = 0;
}
// ((LINE 694)) Convert the number of seconds to an integer, taking decimals into account
$second = round($match[6] + $match[7]/pow(10, strlen($match[7])));
return gmmktime($match[4], $match[5], $second, $match[2], $match[3], $match[1]) - $timezone;
}
else
{
return false;
}
}
錯誤是來自該行的該文件的代碼:
$second = round($match[6] + $match[7]/pow(10, strlen($match[7])));
任何想法如何解決這個或它是什麼? 也許我需要的,如果(is_numeric
爲什麼你使用正則表達式?爲什麼不日期() – Andreas
如果您的var_dump($匹配);它會更容易知道什麼是錯的 – Andreas
我改變這一行以下和錯誤gones。 $ second = round((int)$ match [6] +(int)$ match [7]/pow( 10,strlen($ match [7]))); – Mostafa