0

[image:123:title:size] のようなインライン イメージ タグを HTML img タグに変換する正規表現 $pattern のヘルプを探しています。

コードは次のとおりです。

//[image:ID:caption:size]
$content = '[image:38:title:800x900]';

preg_match_all( '/\[image:(\d+)(:?)([^\]]*)\]/i', $content, $images );

        if( !empty( $images[0] ) )
        {   // There are image inline tags in the content
            foreach( $images[0] as $i => $tag )
            {

            $link_ID = (int)$images[1][$i];
            $caption = empty( $images[2][$i] ) ? '#' : $images[3][$i];
            $size = empty( $images[4][$i] ) ? '#' : $images[5][$i];

            }
            echo '<br />';
            echo 'ID: '.$link_ID.'<br />';
            echo 'Tag: '.$caption.'<br />';
            echo 'size: '.$size.'<br />';
        }

出力:

イメージ ID: 12

タイトル: キャプション:サイズ

サイズ: #

しかし、これを出力する必要があります:

イメージ ID: 12

タイトル: キャプション

サイズ: サイズ

this---> /[画像:(\d+)(:?)([^]]*)]/i

動作しません

どんな助けでも素晴らしいでしょう!

4

2 に答える 2

0

これはあなたが探しているものですか?私はあなたがインライン解析を行っていたと仮定しているので、preg_replace の方がうまくいくかもしれません。あなたがやろうとしていることの正確な詳細はわかりません。

<?php

$content = 'Check out my awesome [image:38:title:800x900], but not as good as my other [image:20:thumbnail:200x200]';

$parsed_content = preg_replace( '/\[image:(\d+):([^\:]+):(\d+)x(\d+)\]/i', '<img src=\'$1.jpg\' alt=\'$2\' width=$3 height=$4>', $content);

echo "Before: {$content}\n";
echo "After: {$parsed_content}\n";

出力:

[image:38:title:800x900]前: 私の素晴らしいをチェックしてください。[image:20:thumbnail:200x200]

<img src='38.jpg' alt='title' width=800 height=900>後: 私の素晴らしいをチェックしてください。 <img src='20.jpg' alt='thumbnail' width=200 height=200>

編集:

<?php
$content = '[image:38:title:800x900]';

preg_match_all( '/\[image:(?<id>\d+):(?<caption>[^:]+):(?<size>[\dx]+)/i', $content, $images );

        if( !empty( $images[0] ) )
        {   // There are image inline tags in the content
            foreach( $images[0] as $i => $tag )
            {

            $link_ID = (int)$images['id'][$i];
            $caption = empty( $images['caption'][$i] ) ? '#' : $images['caption'][$i];
            $size = empty( $images['size'][$i] ) ? '#' : $images['size'][$i];

            }
            echo '<br />' . "\n";
            echo 'ID: '.$link_ID.'<br />' . "\n";
            echo 'Tag: '.$caption.'<br />' . "\n";
            echo 'size: '.$size.'<br />' . "\n";
        }
于 2013-10-19T22:21:40.913 に答える