PHP 非法偏移类型

2022-08-30 21:44:26
Warning: Illegal offset type in /email_HANDLER.php on line 85

$final_message = str_replace($from, $to, $final_message);

preg_match_all('/<img[^>]+>/i',$final_message, $result);
$img = array();
foreach($result as $img_tag)
{
    preg_match_all("/(alt|title|src)=('[^']*')/i",(string)$img_tag, $img[$img_tag]); //LINE 85
}

任何人?我正要为此撕扯我的头发...

这是我$img_tag的var_dump

array(1) {
  [0]=>
  string(97) "<img alt='' src='http://pete1.netsos.com/site/files/newsletter/banner.jpg' align='' border='0px'>"

答案 1

假设是某种类型的对象,而不是正确的字符串,强制转换为$img_tag$img_tag[]

preg_match_all("/(alt|title|src)=('[^']*')/i",(string)$img_tag, $img[(string)$img_tag]);
//------------------------------------------------------------------^^^^^^^^^

某些对象类型,特别是例如,将通过 magic 方法__toString() 返回字符串表示形式,但不能作为常规字符串置入。尝试将它们用作数组键将产生错误,除非您通过 将它们转换为正确的字符串。SimpleXMLElementprint/echoillegal offset type(string)$obj


答案 2

请参阅有关此 PHP 错误报告的第一条评论:

不能使用数组或对象作为键。这样做将导致警告:偏移类型非法。检查您的代码。

确保 具有适当的变量类型。$img_tag


推荐