Posts tagged ‘web’

Problème

Lorsque l’on parse des fichiers, surtout les fichiers HTML, on a parfois besoin d’extraire un texte compris entre deux balises. Voici donc un moyen d’y parvenir avec les expressions régulières.

Considérations techniques

Je parlerais ici des expressions régulières perl (et par extension : grep -P et preg_* de php).

Par défaut, un /.*/ ou toute autre expression sera “gourmand” : ça matche tant que ça peut encore matcher. Par exemple, /a*/ appliqué à la chaîne "aaa" va matcher "aaa", et non pas "".

Dans mon cas pratique, j’ai une balise <td id="identifier"> et j’en cherche le contenu. Donc si la regexp utilisée est /<td id="identifier">(.*)<\/td>/ alors je vais matcher ce qu’il y a entre mon td ouvrant, et le dernier td fermant.

La solution

La solution consiste à dire au moteur d’expression régulière de prendre le moins possible, et ça se code comme suit : /<td id="identifier">(.*?)<\/td>/.

Bibliographie : http://social.msdn.microsoft.com/Forums/en-US/regexp/thread/ab975ba5-31dd-4e6d-b72f-5cd6bf374b02 (et oui, parfois on trouve des choses utiles sur les forums de microsoft).

Je me suis posé la question cette semaine, alors maintenant que j’ai trouvé la réponse, je la partage.

J’utilise swfobject pour gérer mes flash. L’avantage, c’est qu’il n’y a pas à écrire tout le code “object” et “embed”.

  • Sous Windows, il suffit d’utiliser l’option “wmode = transparent”.
  • Ca m’a étonné, mais cette méthode marche sous konqueror.
  • Sous Firefox / Linux, il suffit de mettre une iframe sous le div à afficher au dessus, avec des z-index de plus en plus croissants. Voir cet article.