PHP Недопустимый тип смещения
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://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]);
//------------------------------------------------------------------^^^^^^^^^
Некоторые типы объектов, особенно SimpleXMLElement
, например, вернут строковое представление в print/echo
с помощью магического метода __toString()
, но не могут стоять регулярные строки. Попытки использовать их в качестве ключей массива приведут к ошибке illegal offset type
, если вы не нанесете правильные строки с помощью (string)$obj
.
Ответ 2
Смотрите первый комментарий к этот отчет об ошибке PHP:
Вы не можете использовать массивы или объекты в качестве ключей. Это приведет к предупреждению: тип недопустимого смещения. Проверьте свой код.
Убедитесь, что $img_tag
имеет соответствующий тип переменной.
Ответ 3
$result
является 2-мерным массивом. Таким образом, $img_tag
должен быть массивом.
Но только целые числа и строки могут использоваться как смещение
Ответ 4
foreach( $result[0] as $img_tag)
работает