


Collection récursive de la question: analyse des différences entre les résultats attendus et les résultats et solutions réels
Lors de l'utilisation de QueryList pour les données à plusieurs niveaux rampant, les développeurs rencontrent souvent des situations où les exemples de documents sont incompatibles avec les résultats en cours d'exécution. Cet article utilisera un cas pour analyser profondément les causes profondes du problème et fournir des solutions efficaces.
Description du problème:
L'objectif est d'extraire les informations de titre et de répertorier la structure HTML. La structure HTML est la suivante:
<div id="demo"> <ul> <li> <h3 id="xxx">xxx</h3> <div class="list"> <div class="item">point1</div> <div class="item">item2</div> </div> </li> <li> <h3 id="xxx">xxx2</h3> <div class="list"> <div class="item">point12</div> <div class="item">point22</div> </div> </li> </ul> </div>
Utilisez le code de la liste des requêtes pour l'extraction des données:
// ... (l'extrait de code est manquant, ne peut pas être entièrement analysé) ...
Le résultat attendu est d'extraire chacun<li>
Suivant<h3></h3>
Contenu de titre et item
. Mais le résultat réel est la fusion du contenu item
:
<code>Array ( [0] => Array ( [title] => xxx [list] => Array ( [item] => item1item2 ) ) [1] => Array ( [title] => xxx2 [list] => Array ( [item] => item12item22 ) ) )</code>
Analyse des problèmes:
Le problème est que l'objet interne QueryList hérite range
de l'objet extérieur QueryList. range('')
ne réinitialise pas vraiment le sélecteur, ce qui fait que l'utilisation du sélecteur de range('#demo li')
, entraînant une fusion du contenu item
. Cela peut être dû à un mécanisme interne de requête ou à d'autres problèmes dans le code. range('')
ne réinitialise pas toujours correctement la plage et nécessite une analyse plus approfondie.
Solution:
Pour résoudre ce problème, il est nécessaire de s'assurer que l'objet interne QueryList fonctionne indépendamment de l'objet extérieur. Simple range('')
peut ne pas fonctionner, nous avons besoin d'une méthode plus fiable. Les solutions suivantes peuvent être essayées:
- <li> Utilisez des sélecteurs plus précis: Évitez d'utiliser
range()
, utilisez des sélecteurs CSS plus précis directement dans rules
, par exemple:$ data = QueryList :: html ($ html) -> règles ([ 'title' => ['h3', 'text'], 'list' => ['.list .item', 'text'] // sélectionnez tous les éléments .tem directement])) -> Range ('# Demo Li') -> query (); // Notez que Query () est utilisé directement ici, et le vidage récursif ($ data) de queryData () n'est plus nécessaire;
Cette méthode extrait directement le contenu texte de tous les éléments .item
, évitant les problèmes causés par la récursivité.
- <li> Traitement de boucle manuelle: abandonnez la fonction récursive de la liste de requête et du traitement de boucle manuellement
<li> élément:
$ lis = querylist :: html ($ html) -> find ('# démo li'); $ data = []; foreach ($ lis comme $ li) { $ item = []; $ item ['title'] = queryList :: html ($ li) -> find ('h3') -> text (); $ items = queryList :: html ($ li) -> find ('. list .item') -> map (function ($ item) {return $ item-> text ();}) -> all (); $ item ['list'] = $ items; $ data [] = $ item; } Dump ($ data);
Cette méthode est plus claire et plus facile à comprendre et à déboguer.
- <li> Examen approfondi du code source et de la documentation de la liste de listes: Si la méthode ci-dessus n'est pas valide, vous devez effectuer des recherches approfondies sur le code source et la documentation de la question de la question, découvrez le comportement spécifique et les problèmes potentiels de
range()
et essayez d'autres fonctions fournies par QueryList pour résoudre ce problème. Vous devrez peut-être vérifier la version de la version QueryList et la compatibilité de la version PHP.Quelle option à choisir dépend des exigences spécifiques et de la familiarité avec QueryList. Il est recommandé de donner la priorité à la méthode 1, car elle est simple et efficace. Si la méthode 1 ne peut pas répondre aux exigences, considérez à nouveau la méthode 2. La méthode 3 est le dernier choix et nécessite des connaissances en programmation plus approfondies. N'oubliez pas de toujours vérifier la documentation officielle et l'exemple de code de la question pour vous assurer que ses fonctionnalités sont utilisées correctement.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

在css中,可用list-style-type属性来去掉ul的圆点标记,语法为“ul{list-style-type:none}”;list-style-type属性可设置列表项标记的类型,当值为“none”可不定义标记,也可去除已有标记。

区别是:css是层叠样式表单,是将样式信息与网页内容分离的一种标记语言,主要用来设计网页的样式,还可以对网页各元素进行格式化;xml是可扩展标记语言,是一种数据存储语言,用于使用简单的标记描述数据,将文档分成许多部件并对这些部件加以标识。

在css中,可以利用cursor属性实现鼠标隐藏效果,该属性用于定义鼠标指针放在一个元素边界范围内时所用的光标形状,当属性值设置为none时,就可以实现鼠标隐藏效果,语法为“元素{cursor:none}”。

转换方法:1、给英文元素添加“text-transform: uppercase;”样式,可将所有的英文字母都变成大写;2、给英文元素添加“text-transform:capitalize;”样式,可将英文文本中每个单词的首字母变为大写。

在css中,可以利用“font-style”属性设置i元素不是斜体样式,该属性用于指定文本的字体样式,当属性值设置为“normal”时,会显示元素的标准字体样式,语法为“i元素{font-style:normal}”。

在css中,rtl是“right-to-left”的缩写,是从右往左的意思,指的是内联内容从右往左依次排布,是direction属性的一个属性值;该属性规定了文本的方向和书写方向,语法为“元素{direction:rtl}”。

在css3中,可以用“transform-origin”属性设置rotate的旋转中心点,该属性可更改转换元素的位置,第一个参数设置x轴的旋转位置,第二个参数设置y轴旋转位置,语法为“transform-origin:x轴位置 y轴位置”。


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Dreamweaver CS6
Outils de développement Web visuel

MantisBT
Mantis est un outil Web de suivi des défauts facile à déployer, conçu pour faciliter le suivi des défauts des produits. Cela nécessite PHP, MySQL et un serveur Web. Découvrez nos services de démonstration et d'hébergement.

ZendStudio 13.5.1 Mac
Puissant environnement de développement intégré PHP

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

DVWA
Damn Vulnerable Web App (DVWA) est une application Web PHP/MySQL très vulnérable. Ses principaux objectifs sont d'aider les professionnels de la sécurité à tester leurs compétences et leurs outils dans un environnement juridique, d'aider les développeurs Web à mieux comprendre le processus de sécurisation des applications Web et d'aider les enseignants/étudiants à enseigner/apprendre dans un environnement de classe. Application Web sécurité. L'objectif de DVWA est de mettre en pratique certaines des vulnérabilités Web les plus courantes via une interface simple et directe, avec différents degrés de difficulté. Veuillez noter que ce logiciel