Конвертируйте встроенные теги изображений, например [image: 123: title: size], в теги HTML img

0

Я ищу помощь с регулярным выражением $ pattern для преобразования встроенных тегов изображений, таких как [image: 123: title: size] в теги HTML img.

вот код:

//[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 />';
        }

который выводит:

image id: 12

Название: подпись: размер

размер: #

но должен выводить это:

image id: 12

Название: подпись

размер: размер

this--->/[изображение: (\ d+) (:?) ([^]] *)]/I

не работает

Любая помощь будет замечательной!

  • 0
    Что добавляет этот тип изображения тега?
  • 0
    это часть другого кода. Мне нужно 3 переменные для дальнейшего преобразования.
Показать ещё 2 комментария
Теги:
arrays
image
preg-match-all

2 ответа

0

РЕШИТЬ!

$content = '[image:12:caption:size]';
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];
                print_r($images);
            }
            echo '<br />';
            echo 'ID: '.$link_ID.'<br />';
            echo 'Title: '.$caption.'<br />';
            echo 'Dimensions: '.$size.'<br />';
        }

заменены:

/\[image:(\d+)(:?)([^\]]*)\]/i

с:

/\[image:(\d+)(:?)(.*)(:)([^\]]*)\]/i

Спасибо!

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]

После: Посмотрите мой awesome <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";
        }
  • 0
    Спасибо за ваш ответ, но это не то, что я ищу. Я просто хочу, чтобы правильное выражение разделяло его на ":" / [image: (\ d +): ([^ \:] +): (\ d +) x (\ d +)] / i, чтобы оно выводило: id изображения : 12 Заголовок: размер подписи: размер вместо идентификатора изображения: 12 Заголовок: подпись: размер: #
  • 0
    Я обновил ответ с вашим оригинальным кодом, который теперь делает то, что вы думаете.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню