很简单,就是要匹配出图片的地址
str:<img src='asdfasdf' width=12 height=32>
这个对应的是“/<img .* src=(.*) .*/iUs”但是如果图片没有大小,直接是下面这种形式
<img src='asdfasdf'>
就无法匹配了,我分析了一下,似乎是通配符“.”不能用来匹配不存在的字符(空格似乎也不能匹配)。
请问该如何写这个正则?

解决方案 »

  1.   

    你这前面格式基本固定  试试这个 /<img src='(.*)'/i
      

  2.   

    这个肯定不行,后面的WIDTH HEIGHT都无法匹配的
      

  3.   

    /^<img \s*src=("\S"|'\S')(( \s*width=("[0-9]+"|'[0-9]+') \s*height=("[0-9]+"|'[0-9]+'))|( \s*height=("[0-9]+"|'[0-9]+') \s*width=("[0-9]+"|'[0-9]+')))?\/?>$/i试试看这个
      

  4.   


    $str="<img src='asdfasdf'>";
    preg_match('/<img src=(.*)>/',$str,$new);
    print_r($new);
    #结果
    Array
    (
        [0] => <img src='asdfasdf'>
        [1] => 'asdfasdf'
    )
    $str="<img src='asdfasdf' width=12 height=32>";
    preg_match('/<img src=(.*)>/',$str,$new);
    print_r($new);
    #结果
    Array
    (
        [0] => <img src='asdfasdf' width=12 height=32>
        [1] => 'asdfasdf' width=12 height=32
    )
      

  5.   

    /^<img \s*src=("\S" ¦'\S')(( \s*width=("[0-9]+" ¦'[0-9]+') \s*height=("[0-9]+" ¦'[0-9]+')) ¦( \s*height=("[0-9]+" ¦'[0-9]+') \s*width=("[0-9]+" ¦'[0-9]+')))?\/?>$/i