<title>Hello</title>
<head>Hhsjfjjdf</head>
<h1>Hrrrrrr</h1>
<title>Hello</title>
и <h1>Hrrrrrr</h1>
<head>Hhsjfjjdf</head>
- пропустить!/(<(?:title|h1)[^<>]*?>.*?<\/(?:title|h1)>/
<h1>text text text</title>
если вдруг такое попадется или может попасться такой текст <title> text <h1>text</h1></title>
и эта регулярка вытянет <title> text <h1>text</h1>
, а не весь кусок тега titlepreg_match_all("#(<title>.*<\/title>).*(<h1>.*<\/h1>)#is",$text,$math);
<?php
$text = '<title>Hello</title><head>Hhsjfjjdf</head><h1>Hrrrrrr</h1>';
$fp = fopen("file.txt", "w");
preg_match_all("#(<title>.*<\/title>).*(<h1>.*<\/h1>)#is",$text,$math);
fwrite($fp, $math[1][1]);
fwrite($fp, $math[2][1]);
fclose($fp);
?>
$text = '<title>Hello</title><head>Hhsjfjjdf</head><h1>Hrrrrrr</h1><title>33333</title><head>44444</head><h1>55555</h1>';
preg_match_all("#(<title>.*?<\/title>).*?(<h1>.*?<\/h1>)#is",$text,$matсh);
Array
(
[0] => Array
(
[0] => <title>Hello</title><head>Hhsjfjjdf</head><h1>Hrrrrrr</h1> // первое, что регулярка нашла. целый кусок
[1] => <title>33333</title><head>44444</head><h1>55555</h1> // второе,что нашла регулярка
)
[1] => Array // первая группа
(
[0] => <title>Hello</title> // первое, что нашла регулярка
[1] => <title>33333</title> // второе,что нашла регулярка
)
[2] => Array // вторая группа
(
[0] => <h1>Hrrrrrr</h1> // первое, что нашла регулярка
[1] => <h1>55555</h1> // второе,что нашла регулярка
)
)