web-dev-qa-db-fra.com

get_shortcode_regex () ne correspond qu'au premier shortcode

Le Codex a n exemple d'utilisation de get_shortcode_regex () pour vérifier si un shortcode est appelé sur une page donnée:

$pattern = get_shortcode_regex();
preg_match('/'.$pattern.'/s', $posts[0]->post_content, $matches);
if (is_array($matches) && $matches[2] == 'YOURSHORTCODE') {
    //shortcode is being used
}

Cependant, cela ne détecte que le premier shortcode dans le contenu de la publication. Est-ce un bogue avec get_shortcode_regex (), ou les paramètres preg_match () peuvent-ils être modifiés pour lui faire retourner tous les shortcodes présents sur la page?

1
Ian Dunn

De documents PHP (accentuation du mien):

preg_match () renvoie le nombre de fois que le motif correspond. Ce sera soit 0 fois (pas de correspondance) soit 1 fois car preg_match () arrêtera la recherche après la première correspondance . preg_match_all () au contraire continuera jusqu'à ce qu'il atteigne la fin du sujet.

2
Rarst