0

4つの異なるimgタグがあります

<img src="img1.jpg" alt="test" />
<img src="img2.jpg" height="21"/>
<img src="img3.jpg" border="1">
<img src="img4.jpg" >

PHPコードを使用しています

preg_match_all('#<img (.*?)([/>| />|>| >])#si',$this->Data,$img);  

しかし、このPHPコードの結果

Array
  (
[1] => Array
    (
        [0] => src="img1.jpg"
        [1] => src="img2.jpg"
        [2] => src="img3.jpg"
        [3] => src="img4.jpg"

    )  

結果が欲しい:

    Array
  (
[1] => Array
    (
        [0] => src="img1.jpg" alt="test"
        [1] => src="img2.jpg" height="21"
        [2] => src="img3.jpg" border="1"
        [3] => src="img4.jpg"

    )  

plsを手伝ってくれませんか?

4

2 に答える 2

1

これを試して:

preg_match_all('#<img (.*?)\s?/?>#is', $this->Data, $img);  

オプションで、\s?オプションのスラッシュで囲まれた空白に一致します/?

これは基本的に、整形式のimgタグからコンテンツを取得します。(属性の値に>が含まれていないと仮定します)。

覚えておくべきこととして、正規表現はhtmlを解析するための正しいツールではありませんが、小さい-限定された-一致の場合は非常に便利です。

于 2013-02-17T13:34:25.387 に答える
0

それはあなたが望むものを与えるように見えます。

$s = '<img src="img1.jpg" alt="test" />
      <img src="img2.jpg" height="21"/>
      <img src="img3.jpg" border="1">
      <img src="img4.jpg" >';
preg_match_all('~<img\s+(.+?)([\s/>]|)>~i', $s, $m);
print_r($m);

外;

配列
(
    ...
    [1] => 配列
        (
            [0] => src="img1.jpg" alt="テスト"
            [1] => src="img2.jpg" 高さ="21"
            [2] => src="img3.jpg" ボーダー="1"
            [3] => src="img4.jpg"
        )

ところで、私の知る限りでは、flag sforを使用する必要はありません。preg_match_all*_all

于 2013-02-17T13:53:15.723 に答える