Перво-наперво - это плохой способ сделать это. На лету исключительно плохо, как отметил Сиджей в своем комментарии. Однако -
$data = file_get_contents('http://whatever-bash-url-is.php');
preg_match_all ("/<p class=\"qt\">([^`]*?)<\/p>/", $data, $matches);
print_r($matches);
Это должно дать вам только то, что находится в классе qt, что, кажется, то, что вы хотите.
ПРАВИЛЬНЫЙ способ сделать это - помимо запроса разрешения на использование их контента, поскольку они, похоже, не предлагают API или RSS-канал - это запустить его на серверной части и сохранить каждую уникальную цитату, в которую вы попали ваша собственная база данных и обслуживать ее при загрузке страницы вместо удаленного URL. Вы можете сделать это на cron, который запускается с разумным интервалом, или просто написать скрипт и запустить его самостоятельно.
Еще раз - плохая идея, поскольку вы не являетесь владельцем контента. Это по сути кража.
** это также учитывая, что вы сказали, что можете изменить свой код, если они меняют свой дом. парсер будет лучше **
preg_match_all () http://php.net/manual/en/function.preg-match-all.php
args: образец, предмет, совпадения
pattern - это регулярное выражение, которое вы намереваетесь использовать для перекрестной ссылки на следующий аргумент:
предметом является содержимое, возвращаемое из file_get_contents в этом случае. Это также может быть любая строка.
match - это переменная, которой вы назначаете результаты. Это может быть все, что вы хотите, так что
preg_match_all("\d+", 'long string containing 2 expected digits to match this 1 pattern', $results);
должен привести к массиву, подобному этому:
$results = [
[0] => 2,
[1] => 1
];
, так как числа 2 и 1 в строке - единственное, что соответствует шаблону регулярных выражений \ d + (только цифры), который я предоставил.
Regex может показаться ужасающим, но не падайте духом. Обычные поиски в Google обычно помогают найти нужный вам шаблон. Или вы можете спросить здесь.
Кстати, вы также можете просто использовать preg_match () , так как вы ищете только один результат. Я просто не знал, пришли ли они на страницу с большим количеством результатов, поэтому я пошел с preg_match_all ().
чтобы избежать пустых результатов, вы можете просто добавить туда условное выражение:
foreach($matches AS $m)
{
if($m)
{
//process only if there is something here
}
}
Обратите внимание, что этот пример выше для preg_match. Я полагаю, что Preg_match_all вернет многомерный массив. Пользовательские базовые инструменты отладки, такие как print_r, помогут вам справиться с этой задачей.
Кроме того, я использую этот пример в предположении, что вы запускаете его на серверном скрипте, не инициированном пользователем. Если вам нужна опция «на лету», вы должны изучить этот запрос, а затем создать рекурсивную функцию, которая бы повторно вызывала сайт bash, если результатов не было.