Extraire toutes les valeurs entre accolades regex php
J'ai le contenu de ce formulaire
$content ="<p>This is a sample text where {123456} and {7894560} ['These are samples']{145789}</p>";
J'ai besoin de toutes les valeurs entre accolades dans un tableau comme celui présenté ci-dessous:
array("0"=>"123456","1"=>"7894560","2"=>"145789")
J'ai essayé avec ce code:
<?php
preg_match_all("/\{.*}\/s", $content, $matches);
?>
Mais je suis ici les valeurs de la première accolade à la dernière trouve dans le contenu. Ce qui peut être fait pour obtenir le tableau en format ci-dessus? Je savais que le modèle que j'ai utilisé est incorrect. Ce qui doit être donné à désiré sortie ci-dessus?
source d'informationauteur Ganesh Babu
Vous devez vous connecter pour publier un commentaire.
Faire comme ceci...
De SORTIE :
Deux solutions compactes n'ont pas été mentionnés:
et
Ceux-ci vous permettent d'accéder à des matches directement, sans groupes de capture. Par exemple:
Explication
(?<={)
lookbehind affirme que ce qui précède est une accolade ouvrante.{
correspond à l'accolade d'ouverture, puis\K
indique au moteur à renoncer à ce qui a été égalé jusqu'à présent.\K
est disponible en Perl, PHP et R (qui utilisent lePCRE
moteur), et Ruby 2.0+[^}]
nié le caractère de classe représente un personnage qui n'est pas une accolade de fermeture,*
quantificateur correspond à zéro ou plusieurs fois(?=})
affirme que ce qui suit est une accolade de fermeture.Référence
DÉMO :https://eval.in/84197
De sortie: