1

エラーのある気象ソースから取得したこの画像タグがあります。出力はhtmlではなくwml/wapであるため、表示されるとクラッシュして書き込みます。画像タグは次のように表示されます。

<img alt="FACE="Monospace,Courier">LRPatches, Sky clear, Q1020</FONT><Mist, >" src="http://www.vremea.com/images/fogshow.gif"  width="50" height="50"/>

そして私はそれをこのようにしたいと思います:

<img src="http://www.vremea.com/images/fogshow.gif"  width="50" height="50"/>

私は使用しなければならないことを知っていますpreg_replaceが、それを機能させることができないようです、何かアイデアはありますか?

4

4 に答える 4

1

HTMLに常にまったく同じ構文の問題がある場合、これはとの間のすべてを削除するために機能し<imgますsrc=。HTML構造が変更された場合、これは非常に簡単に壊れますが、すでに壊れているため...

$html = preg_replace('/(?<=<img ).*?(?=src=)/', '', $horribleHorribleHTML);
于 2012-09-03T14:17:34.860 に答える
1

テストされていませんが、これで問題ありません。

<?php
$sStr = '<img ... your image>'; // your string
$iStart = strpos('src="', $sStr); // find the src
$iEnd = strpos('"', $sStr, $iStart); // find the end
$sURL = substr($sStr, $iStart, $iEnd); // get the image
echo $sURL;
?>
于 2012-09-03T14:18:31.727 に答える
1

入力から保存したい属性を一致させてみてください。<img>最初にタグのように見える部分を取得してから、関心のある部分に見える属性を選択してください。

$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";
}
于 2012-09-03T14:18:39.947 に答える
1

これ :

$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);

出力します:

'<img src="http://www.vremea.com/images/fogshow.gif"  width="50" height="50"/>'

不正な形式の<img />タグが変更されないと仮定します。

于 2012-09-03T14:23:03.457 に答える