Тег [img] (JohnCMS 5.0.0)

2.76K
.
Поднимаю тему, пытаюсь переделать под 7
public function highlight_images($var) {

		$var = preg_replace('#\[img=([0-9]+)_([0-9]{3})\]#isU', "$1_$2", $var);

        		$file = $_SERVER['DOCUMENT_ROOT'] . '/files/images/' . $var . '_preview.jpg';
        		if(file_exists($file))
        			$image = '<a href="/files/images/' . $var . '.jpg"><img src="/files/images/' . $var . '_preview.jpg" alt="+" /></a>';
        		else
        			$image = '[Изображение удалено]';
        		return $image;
			
		}


Код работает, но все сообщение кроме тега [img=] выдает [Изображение удалено], что пропустил?
.
# Nurdaulet (24.05.2017 / 12:36)
Поднимаю тему, пытаюсь переделать под 7
public function highlight_images($var) {

$var = preg_replace('#\[img=([0-9]+)_([0-9]{3})\]#isU', "$1_$2", $var);

$file = $_SERVER['DOCUME
Я не уверен точно, что именно в этом причина, но первое, что бросается в глаза, это ссылки на подмаски:
"$1_$2"

Попробуй их записать так:
'$1_$2'
.
# ДоХтор (24.05.2017 / 19:05)
Я не уверен точно, что именно в этом причина, но первое, что бросается в глаза, это ссылки на подмаски:
"$1_$2"

Попробуй их записать так:
'$1_$2'
Без изменении
.
Добавлено: 24.05.2017 / 20:19
Nurdaulet, Позже зайду с пк, посмотрю твою регулярку.

Добавлено: 24.05.2017 / 20:49
Ничего не понял, что ты пытаешься найти с помощью регулярки ( совпадение с чем? и как должен выглядеть bb-код твоего img тега... ) ... Но может быть этот пример тебе поможет понять, куда рыть
$str = 'Текст и картинка: [img]http://johncms.com/images/logo.gif[/img]';

$patt = '~\[img](.+)\[/img]~';
$repl = '<img src="$1" alt="*" />';

echo preg_replace($patt, $repl, $str);
.
Koenig
(\/)____o_O____(\/)
ДоХтор, примерно так [img=1234567_123]
.
# Koenig (24.05.2017 / 20:53)
ДоХтор, примерно так [img=1234567_123]
То есть, поиск только цифр (ну подчёркивание _ итак видно, гг) и без парного (закрывающего) тега [/img] ?
.
(\/)____o_O____(\/)
ДоХтор, ну это я с регулярки взял )
.
# Koenig (24.05.2017 / 21:08)
ДоХтор, ну это я с регулярки взял )
Как-то у него не правильно всё организовано. Я так понял, он хочет выдернуть из строки имя картинки, потом это имя подставить в ссылку для проверки на сервере её наличия, и потом уже подставить это имя в html-тег -- если это так, то ему нужно preg_match() использовать для этого, т.к. preg_replace() будет возвращать вместе с именем файла и всю остальную строку.
.
ДоХтор
Nurdaulet, попробуй этот вариант (ссылки при необходимости подправишь сам)
public function highlight_images($var) {
    $img = preg_match('~\[img=(\d+_\d{3})]~', $var, $arr) ? $arr[1] : '';
    $file = $_SERVER['DOCUMENT_ROOT'] .'/files/images/'. $img .'_preview.jpg';
        
    if (file_exists($file)) {
    	$image = '<a href="/files/images/'. 
            $img .'.jpg"><img src="/files/images/'. 
            $img .'_preview.jpg" alt="+" /></a>';
    } else {
    	$image = '[Изображение удалено]';
    }
    
	return $image;
}
.
# ДоХтор (24.05.2017 / 21:30)
Nurdaulet, попробуй этот вариант (ссылки при необходимости подправишь сам)public function highlight_images($var) {
$img = preg_match('~\[img=(\d+_\d{3})]~', $var, $arr) ? $arr[1] : '';
$fil
Тег работает, но все же без изменении
Прикрепленные файлы:
Всего: 88