Вот и все: если eregi () не соответствует, назначение $ outdata никогда не произойдет, так как блок if не будет выполнен. Если это совпадает, но между тегами ничего нет, $ outdata будет присвоена пустая строка. В обоих случаях! $ Outdata будет иметь значение true, поэтому вместо этого мы можем вернуться ко второму совпадению в теге title.
if(eregi("<linkto>(.*?)</linkto>", $string, $link_match)) {
$outdata = $link_match[1];
}
if(!$outdata && eregi("<title>(.*?)</title>", $string, $title_match)) {
$outdata = $title_match[1];
}
Я также изменил (. *) В матче на (. *?). Это значит, не жадничай. В форме (. *), Если для $ string установлено значение
<title>Page Title</title> ...
... <iframe><title>A second title tag!</title></iframe>
Регулярное выражение будет соответствовать
Page Title</title> ... ... <iframe><title>A second title tag!
Потому что он пытается найти максимально возможное совпадение, пока текст находится между любым и любым другим! В форме (. *?) Совпадение соответствует ожидаемому - оно соответствует
Page Title
И останавливается, как только может.
...
Кстати, эта штука интересная, но зачем она вам? Страницы могут ссылаться на другие страницы и передавать параметры через строку запроса:
<a href="somescript.php?prevpage=Foo">...</a>
Тогда somescript.php может получить доступ к параметру prevpage через суперглобальную переменную $ _GET ['prevpage'].
Это решит вашу проблему?