yr4ik Опубликовано 12 января, 2016 Жалоба Поделиться Опубликовано 12 января, 2016 yr4ik, Ваш код не хочет работать, та же проблема что в самом начале.Спасибо всем за помощь, код mishanya прекрасно справляется с задачей. А проблему нельзя конкретно описать??Скорее всего вы просто не правильно его в код вставили.... Цитата Ссылка на сообщение Поделиться на другие сайты
yodaexolon Опубликовано 12 января, 2016 Автор Жалоба Поделиться Опубликовано 12 января, 2016 Вставил так: public function hashtag_modifier($str) { $new_str = $str; if(preg_match_all('#(style|href)=([\'"])([^\'"]+?)\\1#iu', $str, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER)) {//Затираем style foreach($matches as $m){ $_length = strlen($m[0][0]); $new_str = substr_replace($new_str, str_repeat('*', $_length), $m[0][1], $_length); } } if(preg_match_all('/#(\w+)/iu', $new_str, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER)) {//Поиск наших тегов $_offset = 0; foreach($matches as $m){ $_length = strlen($m[0][0]); $replace = '<a href="tags?keyword='.$m[1][0].'">#'.$m[1][0].'</a>'; $str = substr_replace($str, $replace, $m[0][1] - $_offset, $_length); $_offset += $_length - strlen($replace); } } return $str; } Цитата Ссылка на сообщение Поделиться на другие сайты
yr4ik Опубликовано 12 января, 2016 Жалоба Поделиться Опубликовано 12 января, 2016 Ну опять же - проблему не описали!А по предыдущим постам не поймешь что за ошибка... Интуитивно могу предположить что речь идет о игнорировании тегов типа ##tag Если да то вторая регулярка так: if(preg_match_all('/(?<!#)#(\w+)/iu', $new_str, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER)) {//Поиск наших тегов Цитата Ссылка на сообщение Поделиться на другие сайты
yodaexolon Опубликовано 13 января, 2016 Автор Жалоба Поделиться Опубликовано 13 января, 2016 Когда я вставляю ваш первый код, то возникает та же проблема что я описывал в посте: http://forum.simplacms.ru/topic/10886-%D0%BF%D0%BE%D0%BC%D0%BE%D0%B3%D0%B8%D1%82%D0%B5-%D1%81-%D1%80%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BA%D0%BE%D0%B9/?do=findComment&comment=83644 Цитата Ссылка на сообщение Поделиться на другие сайты
Решение yr4ik Опубликовано 13 января, 2016 Решение Жалоба Поделиться Опубликовано 13 января, 2016 (изменено) Все понял. Исправил код в #24 посте (нужна обратная ссылка на \\2 а не на \\1): if(preg_match_all('#(style|href)=([\'"])([^\'"]+?)\\2#iu', $str, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER)) {//Затираем styleИ лучше наверное затирать не атрибуты, а html теги. Оставлять только содержимое их.Если хотите то правьте эту регулярку на поиск html тегов (в инете есть готовые), а не атрибутов href и style. Изменено 13 января, 2016 пользователем yr4ik Цитата Ссылка на сообщение Поделиться на другие сайты
yodaexolon Опубликовано 13 января, 2016 Автор Жалоба Поделиться Опубликовано 13 января, 2016 Все работает как надо, добавил еще варианты |bgcolor|bordercolor, пока косяки в статьях и описаниях товара не обнаружены. Спасибо огромное! Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.