Maison > Questions et réponses > le corps du texte
J'ai la chaîne suivante dans ma base de données :
"Minecraft is a sandbox video game developed by Mojang Studios from Sweden. Its concept revolve around procedurally generated world made of cubic blocks. Minecraft is the best-selling game in history, having over 238 millions of copies sold. <h1>Gameplay</h1> Minecraft is played from first-person perspective. Gameplay includes mining, crafting, combat, building and terraforming. Usually when a new single-player game is started, a player is placed into a procedurally generated world. The player can encounter various "mobs"...
J'essaie d'extraire la valeur du titre d'une chaîne et de la convertir en lien en utilisant le code suivant
$heading=''; $match1=array(); $matched=preg_match("/<h\d>/",$part,$match1,PREG_OFFSET_CAPTURE); if($matched) { $match2=array(); preg_match("#</h\d>#",$part,$match2,PREG_OFFSET_CAPTURE); $heading= substr($part,$match1[0][1]+4,$match2[0][1]); $heading="<a href='$heading'>$heading</a>"; }
P粉7764125972023-09-12 18:15:37
Basé sur le commentaire de @theforthbird - vous pouvez utiliser une seule expression régulière pour capturer la chaîne souhaitée, bien que l'analyse du HTML avec l'expression régulière en général puisse causer beaucoup de problèmes, même si cela peut convenir à vos objectifs actuels, si vous avez plus à faire ces lignes, il vaut mieux analyser le HTML dans le DOM et extraire ce dont vous avez besoin.
$heading = ''; preg_match('/<h(\d)>(.*?)<\/h>/', $string, $matches); // print_r($matches); # uncomment this to see everything that was 'matched' by this regex if (!empty($matches[2])) { $heading = "<a href='{$matches[2]}'></a>"; }