Ошибка в использовании preg_replace
.Вы хотели извлечь что-то, для чего следует использовать preg_match
:
<?php
$text = file_get_contents("http://davidelks.com/");
preg_match('#<h1 class="title"><a href="([\w\s\x21\/\-\.\£\:]*)">([^<>]*)</a></h1>#', $text, $match);
echo "Mum " . $match[1] . " Dad";
?>
Обратите особое внимание, что вы можете комбинировать классы символов.Вам не нужно [A-Z]|[a-z]|[..]
, потому что вы можете просто объединить его в один список [A-Za-z...]
в квадратных скобках.
Также попробуйте использовать одинарные кавычки для строки PHP, если вы хотите искать двойные кавычки внутри.Это экономит много посторонних побега.Как и альтернативные вложения #
вместо /
вокруг регулярного выражения.