VIPnytt / SitemapParser: classe d’arbitre de carte XML conforme au protocole Sitemaps.org.
Une bibliothèque PHP facile à utiliser pour analyser les cartes Sitemaps conformes au protocole Sitemaps.org.
Le protocole Sitemaps.org est la principale norme et est pris en charge par Google, Bing, Yahoo, Ask et bien d’autres.
Caractéristiques
- Analyser le noyau
- Recherche répétée
- Mettez la corde
- Chaîne d’agent utilisateur
- Assistance aux agents
Formats pris en charge
- XML
.xml
- XML pressé
.xml.gz
- Feuille de règles Robots.txt
robots.txt
- Texte séparé et lisse (désactivé par défaut)
Exigences:
Installation
La bibliothèque est disponible pour l’installation via Composer. Ajoutez simplement ceci au vôtre composer.json
fichier:
{
"require": {
"vipnytt/sitemapparser": "^1.0"
}
}
Puis cours composer update
.
Pour commencer
Un exemple basique
Renvoie uniquement la liste des URL.
use vipnyttSitemapParser;
use vipnyttSitemapParserExceptionsSitemapParserException;
try {
$parser = new SitemapParser();
$parser->parse('https://www.google.com/sitemap.xml');
foreach ($parser->getURLs() as $url => $tags) {
echo $url . '<br>';
}
} catch (SitemapParserException $e) {
echo $e->getMessage();
}
Il a évolué
Restaure toutes les balises disponibles, pour tous les plans de site et toutes les URL.
use vipnyttSitemapParser;
use vipnyttSitemapParserExceptionsSitemapParserException;
try {
$parser = new SitemapParser('MyCustomUserAgent');
$parser->parse('http://php.net/sitemap.xml');
foreach ($parser->getSitemaps() as $url => $tags) {
echo 'Sitemap<br>';
echo 'URL: ' . $url . '<br>';
echo 'LastMod: ' . $tags['lastmod'] . '<br>';
echo '<hr>';
}
foreach ($parser->getURLs() as $url => $tags) {
echo 'URL: ' . $url . '<br>';
echo 'LastMod: ' . $tags['lastmod'] . '<br>';
echo 'ChangeFreq: ' . $tags['changefreq'] . '<br>';
echo 'Priority: ' . $tags['priority'] . '<br>';
echo '<hr>';
}
} catch (SitemapParserException $e) {
echo $e->getMessage();
}
Répétition
Parcourir n’importe quel plan de site détecté pendant l’analyse, pour obtenir une liste complète des URL
use vipnyttSitemapParser;
use vipnyttSitemapParserExceptionsSitemapParserException;
try {
$parser = new SitemapParser('MyCustomUserAgent');
$parser->parseRecursive('http://www.google.com/robots.txt');
echo '<h2>Sitemaps</h2>';
foreach ($parser->getSitemaps() as $url => $tags) {
echo 'URL: ' . $url . '<br>';
echo 'LastMod: ' . $tags['lastmod'] . '<br>';
echo '<hr>';
}
echo '<h2>URLs</h2>';
foreach ($parser->getURLs() as $url => $tags) {
echo 'URL: ' . $url . '<br>';
echo 'LastMod: ' . $tags['lastmod'] . '<br>';
echo 'ChangeFreq: ' . $tags['changefreq'] . '<br>';
echo 'Priority: ' . $tags['priority'] . '<br>';
echo '<hr>';
}
} catch (SitemapParserException $e) {
echo $e->getMessage();
}
Diviser des chaînes de texte séparées
Remarque: C’est désactivé par défaut pour éviter les faux positifs lors de l’anticipation de XML, mais apporte du texte brut à la place.
Éteindre strict
normes, passez simplement cette configuration pour le critère de construction n ° 2: ['strict' => false]
.
use vipnyttSitemapParser;
use vipnyttSitemapParserExceptionsSitemapParserException;
try {
$parser = new SitemapParser('MyCustomUserAgent', ['strict' => false]);
$parser->parse('https://www.xml-sitemaps.com/urllist.txt');
foreach ($parser->getSitemaps() as $url => $tags) {
echo $url . '<br>';
}
foreach ($parser->getURLs() as $url => $tags) {
echo $url . '<br>';
}
} catch (SitemapParserException $e) {
echo $e->getMessage();
}
Exemples supplémentaires
D’autres exemples sont disponibles dans le répertoire des exemples.
Configuration
Options de configuration disponibles et leurs valeurs par défaut:
$config = [
'strict' => true, // (bool) Disallow parsing of line-separated plain text
'guzzle' => [
// GuzzleHttp request options
// http://docs.guzzlephp.org/en/latest/request-options.html
],
];
$parser = new SitemapParser('MyCustomUserAgent', $config);
Si l’agent utilisateur est également installé à l’aide des options de requête GuzzleHttp, il reçoit la priorité la plus élevée et remplace un autre agent utilisateur.