Ticket #396 (new バグ指摘) — at Version 1

Opened 15 years ago

Last modified 14 years ago

モバイル、画像の自動変換が動かない場合がある

Reported by: uchida Owned by: somebody
Priority: Milestone: EC-CUBE
Component: フロント Version: 2.1.2(正式版)
Keywords: Cc:
修正済み:

Description (last modified by uchida) (diff)

img タグを取り出す正規表現が不十分なため、端末に合わせた画像自動変換が効かない場合がある。(img から src の部分を取り出し、その画像に対して変更している)
1系を変更したバージョンにて見つけました。

1系だと GC_MobileImage.php の 37 行目あたり

2系だと SC_MobileImage.php の 50 行目あたり

$pattern = '/<img\s+src=[\'"]([^>"]+)[\'"]\s*\/*>/i';

$pattern = '/<img\s+[^<>]*src=[\'"]([^>"]+)[\'"][^<>]*\s*\/*>/i';

へ変更。

テストコード。ざっと思いつくパターンのみチェックしました。

<?php

$buffer = <<<ETEXT
1. <img src="/img/test1.jpg">
2. <img src="/img/test2.jpg"/>
3. <img src="/img/test3.jpg" />
4. <img  src="/img/test4.jpg">
5. <img  src="/img/test5.jpg"    >
6. <img src="/img/test6.jpg" width="10" height="20">
7. <img src="/img/test7.jpg" width="10" height="20"/>
8. <img src="/img/test8.jpg" width="10" height="20" />
9. <img   src="/img/test9.jpg" width="10" height="20"   />
10. <img   src="/img/test10.jpg" width="10" height="20"   /   >
11. <img style=" 0px"  src="/img/test11.jpg" width="10" height="20"   />
12. <img style=" 0px"
  src="/img/test12.jpg" width="10" height="20"
     />
13. <img style=" 0px"
      src="/img/test13.jpg" width="10" height="20"
     />
14. <a href=""><img src="/img/test14.jpg" width="10" height="20"></a>
15. <img src='/img/test15.jpg'>
ETEXT;


header("Content-type: text/plain");

echo "[original version]\n";
$pattern = '/<img\s+src=[\'"]([^>"]+)[\'"]\s*\/*>/i';
$result = preg_match_all($pattern, $buffer, $images);
echo "count: " . $result . "\n";
echo "extracted tags: " . print_r($images, true) . "\n";

///
echo "-----------------------------------------------------------\n";
echo "[fixed version]\n";
$pattern = '/<img\s+[^<>]*src=[\'"]([^>"]+)[\'"][^<>]*\s*\/*>/i';
$result = preg_match_all($pattern, $buffer, $images);
echo "count: " . $result . "\n";
echo "extracted tags: " . print_r($images, true) . "\n";
?>

Change History

comment:1 Changed 15 years ago by uchida

  • Description modified (diff)
Note: See TracTickets for help on using tickets.