2016-10-26 2 views
0

Je suis en train d'écrire un programme de grattage de pages HTML PHP et j'ai besoin de connaître la date à laquelle elle a été mise à jour. J'ai fait cela $html = file_get_html(xyz.com) pour obtenir le code HTML. Une ligne du HTML a la date comme ceci  10/24/2016.Récupérer la date à partir d'une page HTML

Je l'ai fait:

if (strpos($html, '7nbsp;') !== false) { 
    if (strpos($html, '&nbsp;</a>') !== false) { 
     echo "How to print drawing date--here!"; 
    } 

Maintenant, voici le dilemme, je ne peux pas chercher &nbsp;10/24/2016 parce que je n'ai aucun moyen de savoir quand la nouvelle date est lorsque le site est mis à jour, il pourrait être de 10/30/2016 ou 11/12/2016 ...

Idéalement, je voudrais que la date soit dans une chaîne, comme $date = "11/17/2016". Comment rechercher la date elle-même?

+0

Ne pourriez-vous prendre juste la sous-chaîne -10 de la fin? –

+0

FYI, vous avez une faute de frappe dans votre code ... '7nbsp;' vs ' '. Aussi, pourriez-vous vérifier les en-têtes à la place? Il peut y avoir une date utilisable dans les en-têtes de réponse. – Brad

Répondre

1

Ce code fonctionne pour vous:

preg_match('/\&nbsp;([0-9]{1,2}\/[0-9]{1,2}\/[0-9]{4})/', $html, $matches); 

Ceci est une expression régulière qui recherche une date (tant que la date est au format correct). Les correspondances trouvées seront stockées dans la variable '$ matches'.

+0

Peut-être que je n'ai pas expliqué clairement ce que je veux faire parce que je suis très perplexe. Laisse-moi réessayer. Ce que je veux faire, c'est obtenir la date elle-même. Disons que je veux utiliser le & nbsp comme référence pour confirmer $ html contient la chaîne   24/10/2016, mais une semaine plus tard, la date sera le 31/10/2016 donc sûrement je ne peux pas utiliser   24/10/2016 comme référence, la seule chose que je peux utiliser comme référence est  . maintenant comment puis-je trouver 31/10/2016 et le mettre dans une chaîne. Y at-il un php peut rechercher une chaîne de début avec & nbsp plus 10 autres caractères? De cette façon, je peux utiliser la sous-chaîne pour obtenir la bonne date. – Rich

+1

Oui, c'est ce que fait mon code dans la réponse. C'est une regex qui cherche une date (tant que la date est au format correct). Les correspondances trouvées seront stockées dans la variable '$ matches'. – krasipenkov