"Cannot use string offset as an array"
If you get that error, it means that $node-&gt;body is not an array, but a string. In that case, PHP would take $node-&gt;body[und] as a string offset, and you could not use $node-&gt;body[und][0][safe_value].

To notice that both und, and safe_value are considered from PHP two constants, but Drupal doesn't define those constants. In that case, PHP would use as value of the constants und, and safe_value, the values of the strings 'und', and 'safe_value', but you should not rely on that.