j0k3r/graby
Graby extracts clean article content from web pages. Built on php-readability and FiveFilters site_config patterns, it’s a composer-friendly, decoupled, fully tested fork of Full-Text RSS. Requires PHP 8.2+, Tidy and cURL.
Full Changelog: https://github.com/j0k3r/graby/compare/v2.5.0...2.5.1
Tagged a minor version just to warn you that Guzzle 5 support has been dropped.
Full Changelog: https://github.com/j0k3r/graby/compare/2.4.6...v2.5.0
Full Changelog: https://github.com/j0k3r/graby/compare/2.4.5...2.4.6
Full Changelog: https://github.com/j0k3r/graby/compare/2.4.4...2.4.5
Full Changelog: https://github.com/j0k3r/graby/compare/2.4.3...2.4.4
Full Changelog: https://github.com/j0k3r/graby/compare/2.4.2...2.4.3
guzzlehttp/psr7 2.0 & Symfony 6.0 by @jtojnar in https://github.com/j0k3r/graby/pull/301Full Changelog: https://github.com/j0k3r/graby/compare/2.4.1...2.4.2
Just an empty release because 2.4.0 was created on the wrong branch (master instead of 2.x).
It should be fine by now.
If you want to extract content from a page you already fetched outside of Graby, you can call setContentAsPrefetched() before calling fetchContent(), e.g.:
use Graby\Graby;
$article = 'http://www.bbc.com/news/entertainment-arts-32547474';
$input = '<html>[...]</html>';
$graby = new Graby();
$graby->setContentAsPrefetched($input);
$result = $graby->fetchContent($article);
Full Changelog: https://github.com/j0k3r/graby/compare/2.3.3...2.4.0
find_string & replace_string size are equal by @j0k3r in https://github.com/j0k3r/graby/pull/281Full Changelog: https://github.com/j0k3r/graby/compare/2.3.3...2.3.5
site_config are kept by @j0k3r in https://github.com/j0k3r/graby/pull/280Full Changelog: https://github.com/j0k3r/graby/compare/2.3.3...2.3.4
Full Changelog: https://github.com/j0k3r/graby/compare/2.3.2...2.3.3
Full Changelog: https://github.com/j0k3r/graby/compare/2.3.1...2.3.2
Full Changelog: https://github.com/j0k3r/graby/compare/2.3.0...2.3.1
wrap_in #262Kudos to @Simounet for all these PRs 🤝
makeAbsoluteStr #249date_parse result #233smalot/pdfparser newer version #235preg_* function when html is really too big #226🎉 Thanks to @caneco, Graby has a logo! 🎉

This release include a fix for date. Before, we validated a date and if the date wasn't valid, we return null. Now, if the date is valid, we return it as a W3C formatted date: Y-m-d\TH:i:sP.
data-srcset as lazyload attributes #209The 2.0 started almost 2 years ago on an initiative of @aaa2000 :clap: to add support for HTTPlug.
The 1.x was coupled to Guzzle 5 which is quite old now and some people started to complain about how coupled it was. It was obvious that the best solution was to switch to HTTPlug to let the final user decide which HTTP client to use.
The 2.0.0 is tested using these clients:
There are many more available HTTP client which should work too.
Other changes are:
If you want to upgrade, follow these steps.
Finally, huge thanks to @aaa2000 to have started the work 2 years ago. Also thanks to @jtojnar for helping me on that release.
How can I help you explore Laravel packages today?