Mira, una clave de las expresiones es que no debes ser 100% intimo con ellas al momento de formularlas.
Reflexiona y responde, ¿que porcentaje de la salida es suficiente para extraer y determinar el resultado de la API?
Según yo no es necesario expandir la expresión para que cubra TODA la salida que obtienes, con que solo especifiques lo mínimo te ahorras trabajo y consigues lo mismo.
Yo lo haría así, mas simple:
Código PHP:
<?php
$salida = '<?xml version="1.0" standalone="yes"?>
<error>
<message>No Videos found!</message>
<code>2001</code>
</error>';
if (strpos($salida, '<error>'))
{
preg_match('/<message>(.+?)<\/message>/', $salida, $match);
die("Error: $match[1]");
}
Y si, debes afinar tu manejo de expresiones regulares, pero también debes mejor tu capacidad para ver las cosas.
Como puedes ver, mi ejemplo hace lo que necesitas sin tener una expresión que abarque toda la salida.
El caso es que debes ser mas sencilla tu expresión, mientras mas sencilla mejor.
Siempre.