$text = ''; // Insert text of post here ...
preg_replace_callback('#\[im\](.*?)\[/im\]#si', 'imagesList', $text);
function imagesList($matches) {
$dir = rtrim(dirname(__FILE__), '\/') . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . $matches[1] . DIRECTORY_SEPARATOR;
if (!is_file($dir . 'cache.json')) {
if (is_dir($dir)) {
$images = array_values(array_diff(scandir($dir), array('.', '..', '.htaccess'))));
// В этом месте можно добавить обработку массива. Например, запилить их в тег <img />
file_put_contents($dir . 'cache.json', json_encode($images));
}
} else {
$images = json_decode(file_get_contents($dir . 'cache.json'));
}
return isset($images) ? implode('<br />', $images) : 'No such file or directory "' . $matches[1] . '"';
}
http://pastebin.com/quNAEDFV
$text = 'ФОТО [im]bonus[/im]';
$text = preg_replace_callback('#\[im\](.*?)\[/im\]#si',
create_function(
'$matches',
'$array = array();'
'$dir = opendir(\"http://сайт.ru/$matches[1]/\");'
'while ($file = readdir($dir)) {
if (($file != '.') && ($file != \"..\")) {
$array[] = $file;
}
}'
'closedir($dir);'
'$total = count($array);'
'$end = $start + $kmess;'
'for ($i = $start; $i < $end; $i++) {
$t = "<img src=\"http://сайт.ru/$matches[1]/1.gif\" /><br/>";
}'
'return $t;'
)
, $text);
echo $text;
Оюъединение строк вроде как.
'$array = array();'
'$dir = opendir("http://сайт.ru/$matches[1]/");'
'while ($file = readdir($dir)) {
if (($file != '.') && ($file != \"..\")) {
$array[] = $file;
}
}'
'closedir($dir);'
'$total = count($array);'
'$end = $start + $kmess;'
'for ($i = $start; $i < $end; $i++) {
$t = "<img src=\"http://сайт.ru/$matches[1]/1.gif\" /><br/>\;
}'
'return $t;'
У тебя тут несколько строк. Их наверное же следует объеденить, разве не так? У тебя IDE разве ошибки не подцвечивает?
И вообще, зачем мучаешься с create_function, когда можно сразу определить её где-нибудь и всё?
Там у тебя еще В самой функции одинарные кавычки надо заэкранировать, либо заключить строку в ""
Screamer, Нет у меня стандартный редактор CPanel в данной ситуации
blackvj, ты в примерах пути к своим папкам пропиши, далее например галерею сделать так
echo '<table><tr>';
$i=1;
foreach ($arr as $img) {
echo '<td><img src="' . $dir . DIRECTORY_SEPARATOR . $img . '" alt="" /></td>;
if ($i%3==0) {
echo '</tr><tr>';
$i++;
}
echo '</tr></table>;
# Screamer (18.09.2013 / 18:30)
И вообще, зачем мучаешься с create_function, когда можно сразу определить её где-нибудь и всё?
Там у тебя еще В самой функции одинарные кавычки надо заэкранировать, либо заключить строку в ""
Это я уже дописал одинарные кавычки ибо как написано в мануале к финкции их нужно совать везде в каждой строке.
Код без кавычек которые нужно вставить.
$text = 'ФОТО [im]bonus[/im]';
$text = preg_replace_callback('#\[im\](.*?)\[/im\]#si',
create_function(
'$matches',
$array = array();
$dir = opendir('../'.$matches[1].'/');
while ($file = readdir($dir)) {
if (($file != '.') && ($file != "..")) {
$array[] = $file;
}
}
closedir($dir);
$total = count($array);
$end = $start + $kmess;
for ($i = $start; $i < $end; $i++) {
$t = '<img src="http://сайт.ru/'.$matches[1].'/1.gif" /><br/>';
}
'return $t;'
)
, $text);
echo $text;
Koenig, Спасибо за код и разьяснение. Но это не ТО.