$re = '/(?s)\<A\>.*?\<\/A\>/m';
$str = ' <A>
<name>ns1</name>
<ORIGIN>example.com</ORIGIN>
<class>IN</class>
<host>127.0.0.1</host>
<ttl>172800</ttl>
</A>
<A>
<name>ns2</name>
<ORIGIN>example.com</ORIGIN>
<class>IN</class>
<host>127.0.0.2</host>
<ttl>172800</ttl>
</A>
<NS>
<name>example</name>
<ORIGIN>com</ORIGIN>
<class>IN</class>
<host>ns.example.COM</host>
<ttl>172800</ttl>
</NS>
';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
// Print the entire match result
var_dump($matches);
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for PHP, please visit: http://php.net/manual/en/ref.pcre.php