php - 由html标签拆分字符串失败

时间:2015-01-07 13:28:05

标签: php html string split tags

我想在字符串中计算html标签。我试图这样做:

$array = preg_split("<li>",$string);
$count=count($array);
echo $count;

计数高于它应该是因为此代码将$ string变量与文本“li”而不是标记li分开。

如何使用html标签拆分字符串?

这是我尝试的字符串。

Κυκλοφορητής Lowara Ecocirc XL, υψηλής απόδοσης για εγκαταστάσεις κεντρικής θέρμανσης με κινητήρες μονίμων μαγνητών, τεχνολογίας ECM, υγρού ρότορα.<br />
 <br /> Κατάλληλος για συστήματα ζεστού νερού χρήσης και θέρμανσης, συστήματα ψύξης και κλιματισμού, ηλιακά καθώς και για γεωθερμικά συστήματα. <ul> <li>
 Δυνατότητα ρύθμισης αναλογικής και σταθερής πίεσης, σταθερών στροφών και λειτουργία νυχτός.</li> <li>Σχεδιασμός υγρού ρότορα: Όλα τα περιστρεφόμενα μέρη λ
 ιπαίνονται από το αντλούμενο υγρό το οποίο ψύχει και τον κινητήρα.&nbsp;</li> <li>Χυτό θερμομονωτικό κέλυφος που κρατάει την θερμοκρασία του αντλούμενου υγρού
  (και του περιβάλλοντος) ακριβώς εκεί που πρέπει.</li> <li>Ρύθμιση και λειτουργία του νέου Ecocirc XL πολύ εύκολα μόνο με την χρήση τεσσάρων κουμπιών. Πρόσβαση
   στις προηγμένες ρυθμίσεις από PC, tablet ή smartphone μέσω ενσωματωμένου πρωτοκόλλου επικοινωνίας BUS ή Wi-Fi (προαιρετικό).</li> <li>Η ενσωματωμένη προστασία
    από εν ξηρώ λειτουργία σταματάει την αντλία και προστατεύει από βλάβες λόγω έλλειψης νερού.</li> <li>Τα ηλεκτρονικά μέρη είναι διαχωρισμένα από το υδραυλικό 
    μέρος της αντλίας για την αποφυγή προβλημάτων από συμπυκνώματα κατά την άντληση υγρών από συστήματα ψύξης.</li> <li>Δύο αναλογικές είσοδοι για σήματα 4-20mA 
    και 0-10V καθώς και επαφή για αισθητήριο &nbsp;θερμοκρασίας.</li> </ul> Συνοδεύεται από ρακόρ σύνδεσης.<br /> <br /> Ο κυκλοφορητής LOWARA Ecocirc XL καλύπτει
     πλήρως της οδηγία ErP η οποία θα ισχύει από το 2015.&nbsp;<br /> <br /> Έντυπα:<br /> <a href="http://www.lowara.com/lowdata/doc/EN/ecocircxl-td-en.pdf"
      style="line-height: 20.7999992370605px;">Πλήρες τεχνικό εγχειρίδιο των κυκλοφορητών Lowara Ecocirc</a><br /> <a href="http://www.lowara.com/lowdata/doc/ml
      /ecocircxl-im-ml.pdf" style="line-height: 20.7999992370605px;">Οδηγίες χρήσης</a><br /> &nbsp;

ok ..发现问题:从数据库中检索字符串,其中字符为“&lt;”被替换为“&amp; lt;”和“&gt;”被替换为“&amp; gt;”。当我使用这段代码时:

$array = preg_split("/&lt;li&gt;/",$description);

它起作用了。

我只是想知道为什么它用字符“&lt;,&gt;”回显字符串在他们的propper形式而不是“&amp; lt;,&amp; gt;”

1 个答案:

答案 0 :(得分:4)

你忘记了分隔符了,这应该有效:

(此外,您输出的计数比标记的计数高1倍,因为它会计算数组的元素,因此您只需减去1(例如"<li>x1</li>x2" - > 2) )

$array = preg_split("/<li>/",$string);
$count = count($array);
echo $count;

有关正则表达式分隔符的更多信息以及您可以使用哪个分区:http://php.net/manual/en/regexp.reference.delimiters.php