php - 用 html 标签拆分字符串失败
php - split string by html tags fails
我想统计字符串中的 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>Σχεδιασμός υγρού ρότορα: Όλα τα περιστρεφόμενα μέρη λ
ιπαίνονται από το αντλούμενο υγρό το οποίο ψύχει και τον κινητήρα. </li> <li>Χυτό θερμομονωτικό κέλυφος που κρατάει την θερμοκρασία του αντλούμενου υγρού
(και του περιβάλλοντος) ακριβώς εκεί που πρέπει.</li> <li>Ρύθμιση και λειτουργία του νέου Ecocirc XL πολύ εύκολα μόνο με την χρήση τεσσάρων κουμπιών. Πρόσβαση
στις προηγμένες ρυθμίσεις από PC, tablet ή smartphone μέσω ενσωματωμένου πρωτοκόλλου επικοινωνίας BUS ή Wi-Fi (προαιρετικό).</li> <li>Η ενσωματωμένη προστασία
από εν ξηρώ λειτουργία σταματάει την αντλία και προστατεύει από βλάβες λόγω έλλειψης νερού.</li> <li>Τα ηλεκτρονικά μέρη είναι διαχωρισμένα από το υδραυλικό
μέρος της αντλίας για την αποφυγή προβλημάτων από συμπυκνώματα κατά την άντληση υγρών από συστήματα ψύξης.</li> <li>Δύο αναλογικές είσοδοι για σήματα 4-20mA
και 0-10V καθώς και επαφή για αισθητήριο θερμοκρασίας.</li> </ul> Συνοδεύεται από ρακόρ σύνδεσης.<br /> <br /> Ο κυκλοφορητής LOWARA Ecocirc XL καλύπτει
πλήρως της οδηγία ErP η οποία θα ισχύει από το 2015. <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 />
ok..发现问题:字符串是从数据库中检索到的,其中字符“<”被替换为“<”并且“>”被替换为“>”。当我使用这段代码时:
$array = preg_split("/<li>/",$description);
它工作正常。
我只是想知道为什么它以适当的形式回显带有字符“<,>”而不是“<,>”的字符串
您忘记了分隔符,所以这应该有效:
(此外,您输出的计数永远比标签的计数高 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
我想统计字符串中的 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>Σχεδιασμός υγρού ρότορα: Όλα τα περιστρεφόμενα μέρη λ
ιπαίνονται από το αντλούμενο υγρό το οποίο ψύχει και τον κινητήρα. </li> <li>Χυτό θερμομονωτικό κέλυφος που κρατάει την θερμοκρασία του αντλούμενου υγρού
(και του περιβάλλοντος) ακριβώς εκεί που πρέπει.</li> <li>Ρύθμιση και λειτουργία του νέου Ecocirc XL πολύ εύκολα μόνο με την χρήση τεσσάρων κουμπιών. Πρόσβαση
στις προηγμένες ρυθμίσεις από PC, tablet ή smartphone μέσω ενσωματωμένου πρωτοκόλλου επικοινωνίας BUS ή Wi-Fi (προαιρετικό).</li> <li>Η ενσωματωμένη προστασία
από εν ξηρώ λειτουργία σταματάει την αντλία και προστατεύει από βλάβες λόγω έλλειψης νερού.</li> <li>Τα ηλεκτρονικά μέρη είναι διαχωρισμένα από το υδραυλικό
μέρος της αντλίας για την αποφυγή προβλημάτων από συμπυκνώματα κατά την άντληση υγρών από συστήματα ψύξης.</li> <li>Δύο αναλογικές είσοδοι για σήματα 4-20mA
και 0-10V καθώς και επαφή για αισθητήριο θερμοκρασίας.</li> </ul> Συνοδεύεται από ρακόρ σύνδεσης.<br /> <br /> Ο κυκλοφορητής LOWARA Ecocirc XL καλύπτει
πλήρως της οδηγία ErP η οποία θα ισχύει από το 2015. <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 />
ok..发现问题:字符串是从数据库中检索到的,其中字符“<”被替换为“<”并且“>”被替换为“>”。当我使用这段代码时:
$array = preg_split("/<li>/",$description);
它工作正常。
我只是想知道为什么它以适当的形式回显带有字符“<,>”而不是“<,>”的字符串
您忘记了分隔符,所以这应该有效:
(此外,您输出的计数永远比标签的计数高 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