Я ищу помощь с регулярным выражением $ 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
не работает
Любая помощь будет замечательной!
$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
Спасибо!
Это то, что вы ищете? Я предполагаю, что вы делаете встроенный синтаксический анализ, поэтому 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";
}