Убрать расширения по регулярному выражению!
Приветствую сообщество!
В общем дело такое…
Необходимо в теле контента (а в контенте у нас много всего и картинки и теги и текст разумеется), убрать расширение…
НО! Не у самих картинок, а у атрибута title, т.е.:
Было так:
title=«dazzle1»
Было бы просто, например так:
Есть еще вот такая шляпа:
Вообще в идеале было бы прикольно, если есть у кого идеи или решение о том, как можно менять title на стадии создания тикета из фронта, было легче и проще, но и там я не преуспел, даже с костылями.
Помогите в этом нелегком вопросе!
В общем дело такое…
Необходимо в теле контента (а в контенте у нас много всего и картинки и теги и текст разумеется), убрать расширение…
НО! Не у самих картинок, а у атрибута title, т.е.:
Было так:
<a href="/assets/images/tickets/95/8b8d318dc167c4249d0635e60a0ca114b1e03aaf.png" data-fancybox="gallery">
<img title="dazzle1.png" src="/assets/images/tickets/95/8b8d318dc167c4249d0635e60a0ca114b1e03aaf.png" alt="dazzle1.png">
<small>Нажмите на картинку для увеличения.</small>
</a>
но убрать надо расширение, чтобы получилось так:title=«dazzle1»
Было бы просто, например так:
{$_modx->resource.content | replace : '.jpg' : ''}
конечно даже такое выражение не поможет, т.к. по мимо того, что оно уберет все подобные совпадения, так еще и дополнительное условие наверняка через костыли воротить, а даже если и нет, один фиг не подходит.Есть еще вот такая шляпа:
{'April 15, 2014' | ereplace : '/(\w+) (\d+), (\d+)/i' : '${1}1, $3'}
НО! Как сделать так, чтобы она вырезала только то, что мне нужно у меня не получилось, не силен в PHP и кракозябры эти не пойму, воротил, воротил и не наворотил ничего!Вообще в идеале было бы прикольно, если есть у кого идеи или решение о том, как можно менять title на стадии создания тикета из фронта, было легче и проще, но и там я не преуспел, даже с костылями.
Помогите в этом нелегком вопросе!
Комментарии: 13
По идее, как-то так:
Не уверен, что это сработает на синтаксисе Fenom из-за $1 в выражении. Если нет, то нужно будет просто написать свой модификатор с preg_replace.
{$_modx->resource.content | preg_replace : '#title="(.*?)(\..*?)"#' : 'title="$1"'}
Не уверен, что это сработает на синтаксисе Fenom из-за $1 в выражении. Если нет, то нужно будет просто написать свой модификатор с preg_replace.
Благодарю за помощь.
Данное решение не сработало, действительно! Буду пробовать еще варианты!
Но тем не менее, спасибо!
Данное решение не сработало, действительно! Буду пробовать еще варианты!
Но тем не менее, спасибо!
Разрешите выполнять php странице в настройках pdoTools и используйте нативную функцию php
{$.php.preg_replace('#title="(.*?)(\..*?)"#','title="$1"',$_modx->resource.content)}
PHP мне кажется не сосем безопасно разрешать выпонять на странице, можно ли вот это дело как то в модификатор запихнуть?
Ради интереса решил попробовать. Fenom нормально кушает $1. Но в данном случае возникает ошибка —
Using the eval modifier for regular expressions is not allowed: "#title="(.*?)(\..*?)"#"
Мешает некорректная регулярка, которой не нравится буква e в слове title.
да не совсем, у меня вся страница по одному месту идет, если применить через феном :D
Вообще в идеале было бы прикольно, если есть у кого идеи или решение о том, как можно менять title на стадии создания тикета из фронта, было легче и проще, но и там я не преуспел, даже с костылями.Можно создать плагин на событие OnDocFormSave, там же подключить библиотеку типа PHP Simple HTML DOM Parser, а дальше распарсить любое сохраняемое значение и перезаписать его на лету.
Менять процессор для сохранения name без расширения
title скорее всего оттуда берется (надо чанк вывода смотреть)
Вариант 1.
github.com/bezumkin/Tickets/blob/master/core/components/tickets/processors/web/file/upload.class.php#L125
Добавить строчку
github.com/bezumkin/Tickets/blob/master/core/components/tickets/processors/web/file/upload.class.php#L192
Добавить строчку
title скорее всего оттуда берется (надо чанк вывода смотреть)
Вариант 1.
github.com/bezumkin/Tickets/blob/master/core/components/tickets/processors/web/file/upload.class.php#L125
Добавить строчку
$uploaded_file->set('name', array_slice(explode('.',$data['name']),0,-1));
Вариант 2.github.com/bezumkin/Tickets/blob/master/core/components/tickets/processors/web/file/upload.class.php#L192
Добавить строчку
$data['properties']['name'] = array_slice(explode('.',$data['name']),0,-1);
эх, тоже не работает. Выдает "Array"
Да что-то я забыл про это.
Надо так
Надо так
$name = array_slice(explode('.',$data['name']),0,-1);
$name = implode('.', $name);
$uploaded_file->set('name', $name);
В общем, вы человек Волшебник!
Спасибо огромное!
Спасибо огромное!
Спасибо за вариант, буду пробовать!
Так а что нужно-то?НО! Как сделать так, чтобы она вырезала только то, что мне нужно у меня не получилось, не силен в PHP и кракозябры эти не пойму, воротил, воротил и не наворотил ничего!{'April 15, 2014' | ereplace : '/(\w+) (\d+), (\d+)/i' : '${1}1, $3'}
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.