cari

Rumah  >  Soal Jawab  >  teks badan

Saya tidak faham mengapa kod ini tidak mengubah tajuk menjadi pautan yang betul

Saya mempunyai rentetan berikut dalam pangkalan data saya:

"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"...

Saya cuba mengekstrak nilai tajuk daripada rentetan dan menukarnya menjadi pautan menggunakan kod berikut

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

Saya menjangkakan pembolehubah "tajuk" ialah ,但结果是 P粉715228019P粉715228019457 hari yang lalu572

membalas semua(1)saya akan balas

  • P粉776412597

    P粉7764125972023-09-12 18:15:37

    Berdasarkan ulasan @theforthbird - anda boleh menggunakan regex tunggal untuk menangkap rentetan yang anda inginkan, walaupun menghuraikan HTML dengan regex secara amnya boleh menyebabkan dunia kesakitan, jadi walaupun ini mungkin sesuai dengan tujuan semasa anda, jika anda Masih banyak lagi yang perlu dilakukan bersama baris ini, anda lebih baik menghuraikan HTML ke dalam DOM dan mengekstrak perkara yang anda perlukan.

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

    balas
    0
  • Batalbalas