Search code examples
phphtml-parsingmeta-tagstext-extractionentity-attribute-value

Get the content attribute value of the <meta name="description"> tag in an HTML string


I have the following string:

$string = '<meta name="Keywords" lang="fr" content="ecole commerce, apres bac, ecole management, ecole de management, écoles de commerce, école de management, classement ecole de commerce, ecole commerce paris, ecole superieure de commerce, concours ecole commerce, hec, esc, prepa, forum ecole commerce, avis ecole commerce" /><meta name="description" content="Tout pour s\'informer et échanger sur les écoles de commerce et de management, les concours, les classements, la prépa... Des  témoignages et un forum pour faire le meilleur choix" /><meta name="robots" content="all" />';

and I try to get only the "description" meta from it with this regex expression:

echo preg_replace('/(?:.*)name\="description" content\="(.*)"(?:.*)/i', '$1', $string);

but what I get is:

Tout pour s'informer et échanger sur les écoles de commerce et de management, les concours, les classements, la prépa... Des témoignages et un forum pour faire le meilleur choix" /><meta name="robots" content="all

So, why the extra " /><meta name="robots" content="all?!


Solution

  • Don't use greedy regexps for it, this will work:

    <?php echo preg_replace('/(?:.*)name\="description" content\="(.*?)"(?:.*)/i', '$1', $string); ?>