Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Ungkapan Biasa PHP: Bagaimana untuk memadankan semua fungsi JavaScript dalam HTML

Ungkapan Biasa PHP: Bagaimana untuk memadankan semua fungsi JavaScript dalam HTML

WBOY
WBOYasal
2023-06-22 19:03:54887semak imbas

Dalam pembangunan bahagian hadapan, kami selalunya perlu menggunakan JavaScript untuk mencapai kesan interaktif dinamik pada halaman. Dalam halaman HTML, kami biasanya mentakrifkan fungsi JavaScript dalam teg 3f1c4e4b6b16bbbd69b2ee476dc4f83a dan menggunakan keupayaan penghuraian penyemak imbas untuk melaksanakan fungsi ini. Kadangkala, kita perlu mengekstrak semua fungsi JavaScript dari halaman HTML dan melakukan beberapa pemprosesan padanya, seperti menganalisis struktur kod fungsi, mencari lokasi panggilan fungsi, mengubah suai pelaksanaan fungsi, dsb. Pada masa ini, kita boleh menggunakan ungkapan biasa PHP untuk memadankan fungsi JavaScript dalam kod HTML.

Jadi, bagaimana untuk menggunakan ungkapan biasa PHP untuk memadankan semua fungsi JavaScript dalam HTML? Berikut ialah contoh mudah:

<?php
$html = '<html>
            <head>
                <title>My HTML Page</title>
                <script>
                    function hello() {
                        alert("Hello, world!");
                    }
                </script>
            </head>
            <body>
                <script>
                    function greet(name) {
                        alert("Hello, " + name + "!");
                    }
                </script>
                <p>Welcome to my HTML page!</p>
            </body>
        </html>';

// 定义正则表达式
$pattern = '/<script>s*functions+(w+)s*((.*?))s*{([sS]*?)}s*</script>/i';

// 进行匹配
preg_match_all($pattern, $html, $matches);

// 输出匹配结果
foreach ($matches[1] as $index => $function) {
    echo "Function $function:<br>";
    echo $matches[0][$index] . "<br><br>";
}
?>

Dalam contoh di atas, rentetan kod HTML $html yang mengandungi fungsi JavaScript mula-mula ditakrifkan, dan kemudian ungkapan biasa $pattern ditakrifkan untuk memadankannya Semua fungsi JavaScript . Penjelasan ungkapan biasa ini adalah seperti berikut:

  • 3f1c4e4b6b16bbbd69b2ee476dc4f83a: sepadan dengan permulaan tag 3f1c4e4b6b16bbbd69b2ee476dc4f83a;
  • s*: sepadan dengan kata kunci
  • ;
  • functionfunction: sepadan dengan satu atau lebih aksara ruang kosong;
  • mewakili mana-mana huruf, nombor atau garis bawah;
  • s+
  • : sepadan dengan sifar atau lebih aksara ruang putih; Mod tamak sepadan dengan mana-mana aksara;
  • (w+)w: sepadan dengan sifar atau lebih aksara ruang putih; termasuk baris baharu dan ruang;
  • s*: sepadan dengan hujung tag
  • .
  • ((.*?))(.*?)Seterusnya, kami menggunakan fungsi
  • untuk memadankan fungsi JavaScript dalam
  • . Parameter fungsi ini ialah ungkapan biasa, rentetan yang akan dipadankan dan tatasusunan hasil yang sepadan. Akhir sekali, kami mengeluarkan hasil padanan dengan merentasi nama fungsi dan badan fungsi dalam hasil padanan. s*
  • Perlu diambil perhatian bahawa dalam aplikasi sebenar, kita juga perlu menggunakan beberapa kaedah untuk memproses fungsi JavaScript yang dipadankan, seperti menggantikan nama pembolehubah dalam badan fungsi, mengekstrak lokasi panggilan fungsi, dsb., untuk memenuhi keperluan tertentu.
  • {([sS]*?)}Dalam proses pembangunan sebenar, kami boleh melaraskan peraturan padanan ungkapan biasa mengikut situasi berbeza untuk mendapatkan hasil padanan yang lebih tepat. Selain itu, ungkapan biasa kurang cekap dan mungkin mempunyai kesan tertentu pada prestasi program, jadi ia perlu digunakan dan dioptimumkan dengan berhati-hati. [sS]*?

Atas ialah kandungan terperinci Ungkapan Biasa PHP: Bagaimana untuk memadankan semua fungsi JavaScript dalam HTML. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn