Подтвердить что ты не робот

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'>"
4b9b3361

Ответ 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)

работает