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 }
Кто угодно? Я собираюсь вырвать мои волосы из-за этого …
вот мой var_dump из $ img_tag
array(1) { [0]=> string(97) "<img alt='' src='http://img.ruphp.com/warnings/banner.jpg' align='' border='0px'>"
Предполагая, что $img_tag
является объектом некоторого типа, а не правильной строкой, $img_tag
в строку внутри []
preg_match_all("/(alt|title|src)=('[^']*')/i",(string)$img_tag, $img[(string)$img_tag]); //------------------------------------------------------------------^^^^^^^^^
Например, некоторые типы объектов, в частности SimpleXMLElement
, возвращают строковое представление для print/echo
помощью магического метода __toString()
, но не могут стоять как обычные строки. Попытки использовать их в качестве ключей массива приведут к ошибке illegal offset type
если вы не примените их к строкам с помощью (string)$obj
.
См. Первый комментарий к этому отчету об ошибке PHP :
Вы не можете использовать массивы или объекты в качестве ключей. Это приведет к предупреждению: тип недопустимого смещения. Проверьте свой код.
Убедитесь, что $img_tag
имеет соответствующий тип переменной.
$result
– 2-мерный массив. Так что $img_tag
должен быть массивом.
Но только целые числа и строки могут использоваться как смещение
foreach( $result[0] as $img_tag)
оно работает