Maison >développement back-end >tutoriel php >Guide avancé de phpSpider : Comment utiliser des expressions régulières pour extraire du contenu Web ?

Guide avancé de phpSpider : Comment utiliser des expressions régulières pour extraire du contenu Web ?

WBOY
WBOYoriginal
2023-07-24 20:28:461483parcourir

phpSpider Advanced Guide : Comment utiliser des expressions régulières pour extraire du contenu Web ?

Avant-propos :
Lors du développement de robots d'exploration Web, nous devons souvent extraire du contenu spécifique des pages Web. Les expressions régulières sont un outil puissant qui peut nous aider à effectuer une correspondance de modèles dans les pages Web et à extraire le contenu requis rapidement et avec précision. Cet article vous donnera une compréhension approfondie de la façon d'utiliser des expressions régulières pour extraire du contenu Web en PHP et est accompagné d'un exemple de code.

1. Syntaxe de base des expressions régulières
Les expressions régulières sont un moyen de décrire des modèles de caractères. Utilisez des expressions régulières pour faire correspondre, rechercher et remplacer des chaînes de manière flexible. Voici une syntaxe de base des expressions régulières :

  1. Correspondance de caractères :
  2. . : correspond à n'importe quel caractère
  3. [] : correspond à n'importe quel caractère entre parenthèses
  4. w : correspond à n'importe quelle lettre, chiffre ou trait de soulignement
  5. d : correspond à n'importe quel nombre
  6. s : correspond à n'importe quel caractère vide
  7. : correspond à la limite du mot
  8. Répétez la correspondance :
    • : correspond à 0 ou plusieurs répétitions du caractère précédent
    • : correspond à 1 ou plusieurs répétitions de le caractère précédent
  9.  ? : Correspond à 0 ou 1 répétition du caractère précédent
  10. {n} : Correspond à exactement n répétitions du caractère précédent
  11. {n,} : Correspond à au moins n répétitions du caractère précédent
  12. {n,m} : Correspond à au moins n fois et au plus m répétitions du caractère précédent
  13. Caractères d'échappement :
  14.  : Les caractères spéciaux d'échappement, par exemple, représentent un numéro de point correspondant.

2. Utilisez la fonction preg_match. pour la correspondance régulière
PHP fournit une série de fonctions pour traiter les expressions régulières, dont la plus couramment utilisée est la fonction preg_match. Cette fonction est utilisée pour effectuer une correspondance de chaîne régulière. Voici l'utilisation de base de la fonction preg_match :

$pattern = '/正则表达式/';
$string = '要匹配的字符串';
$result = preg_match($pattern, $string, $matches);

Parmi eux, $pattern est l'expression régulière à mettre en correspondance, $string est la chaîne à mettre en correspondance, $result est la valeur booléenne du résultat correspondant et $matches est le tableau pour stocker les résultats correspondants.

3. Exemple de démonstration
Utilisons un exemple pour illustrer comment utiliser des expressions régulières pour extraire du contenu Web.

Supposons que nous souhaitions extraire tous les liens de la page Web cible suivante :

<html>
<body>
<a href="https://www.example.com/link1">Link 1</a>
<a href="https://www.example.com/link2">Link 2</a>
<a href="https://www.example.com/link3">Link 3</a>
</body>
</html>

Nous pouvons utiliser l'expression régulière suivante pour faire correspondre tous les liens :

$pattern = '/<as+href=["'](.*?)["'].*>(.*?)</a>/';

Ensuite, nous pouvons utiliser la fonction preg_match_all pour faire correspondre tous les résultats. Stockez-le dans un tableau bidimensionnel :

$pattern = '/<as+href=["'](.*?)["'].*>(.*?)</a>/';
$string = '
            
              Link 1
              Link 2
              Link 3
            
          ';
preg_match_all($pattern, $string, $matches);

var_dump($matches[1]);  // 输出所有链接

Après avoir exécuté ce code, nous obtiendrons le résultat suivant :

array(3) {
  [0]=>
  string(23) "https://www.example.com/link1"
  [1]=>
  string(23) "https://www.example.com/link2"
  [2]=>
  string(23) "https://www.example.com/link3"
}

De cette façon, nous avons réussi à extraire tous les liens de la page Web.

4. Notes
Il convient de noter que lorsque vous utilisez des expressions régulières pour le développement de robots, vous devez faire attention aux points suivants :

  1. Gourmand et non gourmand
    Par défaut, la correspondance répétée des expressions régulières est gourmande. , faites correspondre autant de fois que possible. Nous pouvons utiliser ? pour changer la correspondance gourmande en correspondance non gourmande.

Par exemple, l'expression régulière suivante correspondra avidement à la chaîne entière "abcdef" :

$pattern = '/a.*b/';
$string = 'abcdef';
preg_match($pattern, $string, $matches);
var_dump($matches[0]);  // 输出'abcdef'

Si nous changeons la correspondance gourmande en correspondance non gourmande, seule la sous-chaîne la plus courte sera mise en correspondance :

$pattern = '/a.*?b/';
$string = 'abcdef';
preg_match($pattern, $string, $matches);
var_dump($matches[0]);  // 输出'ab'
  1. Sauts de ligne HTML dans balises
    Lors de l'extraction du contenu d'une page Web, vous rencontrez souvent des sauts de ligne contenus dans les balises HTML. Afin de faire correspondre le contenu contenant des nouvelles lignes, nous pouvons ajouter le modificateur s au modèle d'expression régulière :
$pattern = '/<p>(.*)</p>/s';
$string = '<p>This is a paragraph.</p>
           <p>This is another paragraph.</p>';
preg_match_all($pattern, $string, $matches);
var_dump($matches[1]);  // 输出两个段落的内容

Résumé :
Grâce à l'introduction de cet article, vous avez appris à utiliser des expressions régulières pour extraire du contenu Web dans la méthode PHP. Les expressions régulières sont un outil très puissant pour extraire efficacement les informations dont vous avez besoin. J'espère que ce contenu pourra vous aider à mieux développer des robots d'exploration Web.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn