ça va être galère à refaire les marges
Version imprimable
ça va être galère à refaire les marges
@stealth
Tu devrais ajouter un filtre pour éviter de prendre des attributs non-standards:
Code:
1
2
3
4 // .... $styles = array_combine($matches['name'], $matches['value']); $styles = array_intersect_key($styles, array_flip(array('width', 'height', 'border', 'float'));
Euh en fait j'ai un gros problème là... ça fonctionne très bien sauf que si j'ajoute un " ' " ou un n'importe quel caractère spécial "é" "à" etc, ça ne fonctionne plus!!!! J'ai testé tout mais en fait, ça bloque quand je passe dans l'objet DOM, je vous avoue que je n'ai presque aucune connaissance là dedans. De l'aide !!! :calim2:
En fait j'ai le code suivant:
Et j'obtient (avec les echos) le résultat suivant:Code:
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 echo "CONTENT:".$source."<br>"; $doc = new DOMDocument(); $frag = $doc->createDocumentFragment(); $frag->appendXML($source); $doc->appendChild($frag); $images = $doc->getElementsByTagName('img'); foreach($images as $image) { preg_match_all('/(?P<name>[^:\s]+)\:\s*(?P<value>[^;\s]+);?/', $image->getAttribute('style'), $matches); $styles = array_combine($matches['name'], $matches['value']); foreach($styles as $name => $value) { if($name === 'float') { $name = 'align'; } $image->setAttribute($name, $value); } $image->removeAttribute('style'); } $content = $doc->saveHTML(); echo "CONTENT:".$content."<br>";
Le deuxième echo est vide!Code:
1
2
3
4
5
6CONTENT: dfgdf' ' ééé fgd CONTENT:
Si je mets en commentaire le code de DOMDocument le deuxième echo fonctionne. Même résultat si le texte ne contient aucun " ' " ou caractère spécial.
que donne la source HTML
Ca donne:
Sinon en attendant j'utilise les regex ça fonctionne bien comme alternative..Code:
1
2
3 CONTENT:<br><p> ghjgfhj'bvhff"ééééé</p> <br><br>CONTENT:<br>
2 fois width et height c'est pour éviter les xxxx-width: 000px; et les choses comme ça... c'est pas propre c'est sûre c'est du bidouillage mais ça fonctionne :lol:Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 $pattern = '#(<img .*) (style=".*) width: ([0-9]+)px;(.*/>)#'; $replace = '$1 width="$3" $2$4'; $content_final = preg_replace($pattern, $replace, $content_final); $pattern2 = '#(<img .*) (style=".*) height: ([0-9]+)px;(.*/>)#'; $replace2 = '$1 height="$3" $2$4'; $content_final = preg_replace($pattern2, $replace2, $content_final); $pattern = '#(<img .*) (style=.*)"width: ([0-9]+)px;(.*/>)#'; $replace = '$1 width="$3" $2"$4'; $content_final = preg_replace($pattern, $replace, $content_final); $pattern2 = '#(<img .*) (style=.*)"height: ([0-9]+)px;(.*/>)#'; $replace2 = '$1 height="$3" $2"$4'; $content_final = preg_replace($pattern2, $replace2, $content_final); $pattern3 = '#(<img .*) (style=".*)float: (\w+);(.*/>)#'; $replace3 = '$1 align="$3" $2$4'; $content_final = preg_replace($pattern3, $replace3, $content_final);