Bonjour ,
Je dois parser du code html pour qu'il soit valider par instant article de facebook
Voice un exemple sur lequel je m'entraine
et en sortie je m'attends a avoir ceci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 <p> Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod </p> <p> <img src="xxxxx" /> </p> <div class="sourceimg">AAAAA</div> <p> <img src="xxxxx"> </p> <p> Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod </p> <p> <img src="xxxxx"> </p> <div class="sourceimg">CCCCC</div>
et voice mon code pour essayer d'arriver a ce resultat
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 <p> Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod </p> <figure> <img src="xxxxx" /> <figcaption> <cite>AAAAA</cite> </figcaption> </figure> <figure> <img src="xxxxx"> </figure> <p> Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod </p> <figure> <img src="xxxxx" /> <figcaption> <cite>CCCCC</cite> </figcaption> </figure>
et le probleme est que en sortie j'ai mon dernier bloc qui se positionne en 2eme position au lieu de rester en bas
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58 $html = <<<EOF <p> Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod </p> <p> <img src="xxxxx" /> </p> <div class="sourceimg">AAAAA</div> <p> <img src="xxxxx"> </p> <p> Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod </p> <p> <img src="xxxxx"> </p> <div class="sourceimg">CCCCC</div> EOF; libxml_use_internal_errors(true); $dom = new DOMDocument(); $dom->loadHTML($html); $xpath = new DOMXPath($dom); $matches = $xpath->query('//p'); $matchesDivs = $xpath->query('//div'); if($matches->length > 0 ){ $step = 0 ; foreach($matches as $node){ if($node->getElementsByTagName('img')->length == 0){ continue; } $figure_node = $dom->createElement('figure'); $figure_node->appendChild($node->getElementsByTagName('img')[0]); $node->parentNode->replaceChild($figure_node, $node); if(isset($matchesDivs[$step]->nodeValue)){ $figCaption_node = $dom->createElement('figcaption'); $cite_node = $dom->createElement('cite',$matchesDivs[$step]->nodeValue); $figCaption_node->appendChild($cite_node); $figure_node->appendChild($figCaption_node); $matchesDivs[$step]->parentNode->removeChild($matchesDivs[$step]); $step++; } } } $contenu = $dom->saveHTML(); echo $contenu;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 <p> Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod </p> <figure><img src="xxxxx"> <figcaption><cite>AAAAA</cite> </figcaption> </figure> <figure><img src="xxxxx"> <figcaption><cite>CCCCC</cite> </figcaption> </figure> <p> Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod </p> <figure><img src="xxxxx"> </figure>
Partager