Yarma kadar html kodu etiketleri ve içerik

4 Cevap php

Düzenli ifadeler hakkında benden daha fazla bilgiye sahip herkesin tüm etiketler ve tüm kelimeler, yani ayrılmış böylece html kodu bölmek nasıl biliyor mu.

<p>Some content <a href="www.test.com">A link</a></p>

Bu gibi ayrılır:

array = { [0]=>"<p>",
          [1]=>"Some",
          [2]=>"content",
          [3]=>"<a href='www.test.com'>,
          [4]=>"A",
          [5]=>"Link",
          [6]=>"</a>",
          [7]=>"</p>"

Ben şimdiye kadar preg_split kullanarak oldum ve başarılı bir boşlukla dize bölmek için yönetilen veya etiketlere göre bölünmüş ya - ama bu Bölünecek eed zaman sonra tüm içeriği bir dizi elemanı olduğunu.

Herkes bana yardımcı olabilir mi?

4 Cevap

preg_split bu durumda kullanılmamalıdır. Preg_match_all deneyin:

$text = '<p>Some content <a href="www.test.com">A link</a></p>';
preg_match_all('/<[^>]++>|[^<>\s]++/', $text, $tokens);
print_r($tokens);

çıktı:

Array
(
    [0] => Array
        (
            [0] => <p>
            [1] => Some
            [2] => content
            [3] => <a href="www.test.com">
            [4] => A
            [5] => link
            [6] => </a>
            [7] => </p>
        )

)

Ben size örnek 'A' 'A link' dahil unuttum varsayalım.

HTML içeriyorsa fark < ya da> 's etiketleri, regex irade karışıklık şeyler kadar kötü bir başlangıç ​​veya son olarak demek değil! (Dolayısıyla uyarılar)

Eğer kontrol olabilir Simple HTML DOM Parser

Veya PHP DOM parser bakmak

Simple HTML Dom Parser bir deneyin. HTML düzenli ifadeler için çok düzensizdir.

Diğer dillerde yazılmış diğer HTML ayrıştırıcıların karşı karşılaştırıldığında bile ben şu anda, çeşitli uygulamalarda Simple HTML DOM Parser kullanmak ve mükemmel bir araç olarak görüyorum.

Tam olarak neden size tarif belirteçleri dizeye HTML ayrılıyoruz? DOM elemanlarının bir ağaç gibi yapı özel bir uygulama için daha iyi bir yaklaşım değil mi?