Maison  >  Questions et réponses  >  le corps du texte

Je ne comprends pas pourquoi ce code ne transforme pas le titre en lien correct

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>";
    }

Je m'attendais à ce que la variable "titre" soit ,但结果是

P粉715228019P粉715228019427 Il y a quelques jours551

répondre à tous(1)je répondrai

  • P粉776412597

    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>";
    }

    répondre
    0
  • Annulerrépondre