J'ai cette label d'image que je reçois d'une source météo avec des erreurs, la sortie n'est pas html, mais wml / wap, donc il se bloque et brûle quand il apparaît. la balise d'image apparaît comme ceci:
<img alt="FACE="Monospace,Courier">LRPatches, Sky clear, Q1020</FONT><Mist, >" src="http://www.vremea.com/images/fogshow.gif" width="50" height="50"/>
et j'aimerais que ce soit comme ceci:
<img src="http://www.vremea.com/images/fogshow.gif" width="50" height="50"/>
Je sais que je dois utiliser preg_replace
mais je ne peux pas le faire fonctionner, des idées?
Ce :
$imgTag = '<img alt="FACE="Monospace,Courier">LRPatches, Sky clear, Q1020</FONT><Mist, >" src="http://www.vremea.com/images/fogshow.gif" width="50" height="50"/>'; $returnValue = preg_replace('/(<img)(.*)(src.*)/', '$1 $3',$imgTag);
Sortie:
'<img src="http://www.vremea.com/images/fogshow.gif" width="50" height="50"/>'
En supposant que votre label <img />
mal formée ne change pas.
Si le HTML a toujours le même problème de syntaxe, cela permettra de supprimer n'importe quoi entre <img
et src=
. Il est assez facile de se briser si la structure HTML change, mais comme elle a déjà été brisée …
$html = preg_replace('/(?<=<img ).*?(?=src=)/', '', $horribleHorribleHTML);
Il n'est pas testé, mais cela devrait le faire.
<?php $sStr = '<img ... your image>'; // your ssortingng $iStart = strpos('src="', $sStr); // find the src $iEnd = strpos('"', $sStr, $iStart); // find the end $sURL = substr($sStr, $iStart, $iEnd); // get the image echo $sURL; ?>
Vous pouvez essayer de faire correspondre les attributes que vous souhaitez save à partir de votre saisie, vous pouvez essayer d'get les pièces qui ressemblent d'abord à une label <img>
, puis choisissez les éléments recherchés qui searchnt:
$input = 'some other content <img alt="FACE="Monospace,Courier">LRPatches, Sky clear, Q1020</FONT><Mist, >" src="http://www.vremea.com/images/fogshow.gif" width="50" height="50"/> <span class="some"> more other content </span> <img alt="FACE="Monospace,Courier">LRPatches, Sky clear, Q1020</FONT><Mist, >" src="http://www.vremea.com/images/fogshow.gif" width="50" height="50"/> <span class="some"> more other content '; preg_match_all('/<img.+?\/>/sim', $input, $img_parts); foreach ($img_parts[0] as $img_part) { $attrs = array(); preg_match_all('/(?<key>src|width|height)\s*=\s*"(?<value>[^"]+)/i', $img_part, $m); foreach ($m['key'] as $i => $key) { $attrs[] = "{$key}=\"{$m['value'][$i]}\""; } print "<img ".join(' ', $attrs)." />\n"; }