我正在处理一个系统,该系统会在错误类型,消息和详细信息的字符串中向我发送任何意外错误,例如:
Error Type - Database
Error Message - Error Executing Database Query.
Error Detail - [Macromedia][SQLServer JDBC Driver][SQLServer]String or binary data would be truncated.
现在要创建一个更好的UI我应该处理这些错误,所以我想到了explode(),并找到this user's response in the PHP Manual帮助我用两个分隔符而不是一个分隔符来划分结果:
然后我需要深入了解代码,因为我想要$ key => $ val对,所以我遇到了this answer on StackOverflow。
然后我结合了两个并且遇到了这个解决方案:
private function string_to_array( $delimiters, $string )
{
// start by replacing the $delimiters
$ready = str_replace( $delimiters, $delimiters[0], $string );
// create new list() item:
// $key => $value
list( $err_typ, $err_typ_cont,
$err_mess, $err_mess_cont,
$err_det, $err_det_cont ) = explode( $delimiters[0], $ready ); # line 238
$result[ trim( $err_typ ) ] = trim ( $err_typ_cont );
$result[ trim( $err_mess ) ] = trim ( $err_mess_cont );
$result[ trim( $err_det ) ] = trim ( $err_det_cont );
return $result;
}
要将我使用array('-', PHP_EOL)
的功能称为$delimiters
,$string
将错误消息称为string
当我将一个随机错误插入字符串并调用该函数时,它工作得很好。但是,当我从服务器触发随机错误时,我开始遇到问题,特别是我Undefined offset
函数的list()
<br />
<b>Notice</b>: Undefined offset: 5 in <b>C:\xampp\htdocs\application\_backend\class\class.program.php</b> on line <b>238</b><br />
<br />
<b>Notice</b>: Undefined offset: 4 in <b>C:\xampp\htdocs\application\_backend\class\class.program.php</b> on line <b>238</b><br />
另外,请注意阵列的所有奇怪和错误:
Array
(
[Error Type] => Database
Error Message
[Error Executing Database Query.
Error Detail] => [Macromedia][SQLServer JDBC Driver][SQLServer]String or binary data would be truncated.
[] =>
)
这是我在上面看到的相同错误。
我该如何解决?我在这里缺少什么?
答案 0 :(得分:2)
您正在处理的系统显然使用与运行PHP脚本的系统不同的换行符。我建议你处理所有类型的换行符:
$delimiters = array('-', "\r\n", "\n", "\r");