Mitos Опубликовано 11 Июня 2004 Жалоба Поделиться Опубликовано 11 Июня 2004 Стоит такая задача есть какой то произвольный текст, содержаший выделенные жирным фрагменты , и выделенные жирным имена в виде [B]2[COLOR=red]ИМЯ[/COLOR][/B]Вопрос как с помощью регулярных выражений выдрать выделенный жирным текст и при этом не хапнуть имя ? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Balancer Опубликовано 12 Июня 2004 Жалоба Поделиться Опубликовано 12 Июня 2004 Не понял, т.е. заменять [b]....text...[/b], но не заменять [b]...[color...]...[/b]? Формализуй задачу. Кстати, в регекспах обычно действует такая интересная особенность - когда ясно поставишь задачу, то сразу и решение становится понятно Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Mitos Опубликовано 12 Июня 2004 Автор Жалоба Поделиться Опубликовано 12 Июня 2004 Balancer не заменить а выдрать , т.е. если в общем тексте присутствует <b>text</b> (я вначале малость неточно выразился ведь в БД уже хранятся html теги) то нужно грубо говоря $temp[] = "text" но нивкоем случае не $temp[] = "2<font color=red>text</font> Сейчас юзаю preg_match("'<b>.*?</b>'si", $first,$find); но оно и левак вылавливает Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Balancer Опубликовано 12 Июня 2004 Жалоба Поделиться Опубликовано 12 Июня 2004 Не понял, тебе из вырезанного результата нужно тэги выкусить? Так в PHP есть функция http://php.net/strip_tags Если что-то другое - учись выражаться яснее, всегда полезно Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Mitos Опубликовано 12 Июня 2004 Автор Жалоба Поделиться Опубликовано 12 Июня 2004 блин , я уже незнаю КАК яснее , ну попробуем так Пример : $first="траляля траляля какая то фигня , еще какая то фигня <b>2<font color=red>Balancer</font></b> еще идет текст и еще и еще skdufksudhfk далее полный бред и вот щас бдует то что енужно опознать и захватить <b>ВОТ_ЭТОТ_ТЕКСТ_НУЖНО_ПРИСВОИТЬ_ПЕРЕМЕННОЙ</b> далее идет еще бред" Так понятней ? Вот если к этому тексту мы применим preg_match("'<b>.*?</b>'si", $first,$find);а затем $words = "$find[0]";то получим $words = "2<font color=red>Balancer</font>" а не $words = "ВОТ_ЭТОТ_ТЕКСТ_НУЖНО_ПРИСВОИТЬ_ПЕРЕМЕННОЙ" Бдин , незнаю я куда уж яснее Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Anarki Опубликовано 4 Июля 2004 Жалоба Поделиться Опубликовано 4 Июля 2004 Могу лишь доки по регекспам скинуть, а там сам разберешься? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Balancer Опубликовано 4 Июля 2004 Жалоба Поделиться Опубликовано 4 Июля 2004 Честно говоря, меня даже забавляет то, как человек не может сформулировать то, что ему нужно. Повторюсь: в регекспах обычно действует такая интересная особенность - когда ясно поставишь задачу, то сразу и решение становится понятно. По последнему примеру могу тольео предложитьpreg_match("'^.*<b>.*?</b>.*?$'si", $first,$find); Тогда он не хапнет первое вхождение, а хапнет последнее. Нет, народ, ну как можно лезть писать программу, настолько не умея сформулировать чего хочется в итоге? Тысячу раз сказано, что "неясность речи есть неясность мысли". Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Mitos Опубликовано 5 Июля 2004 Автор Жалоба Поделиться Опубликовано 5 Июля 2004 Anarki ну проблему я уже решил но от дополнительной инфы не откожусь кидай на mitosmail<ет>ua.fm Balancer я тебе уже конкретный пример привел того что было нужно, я не знаю КАК мне надо выразиться что б ты понял ИМХО приведенного примера должно было хватить .Мож так поймешь чего я добивался http://pricools.vbios.com/forum/index.php?showtopic=504 ? и ты сможешь мне на будущее сказать КАК я должен был это описать Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Valera Опубликовано 5 Июля 2004 Жалоба Поделиться Опубликовано 5 Июля 2004 ля ля <b>ВОТ_ЭТОТ_ТЕКСТ_НУЖНО_ОТЛОВИТЬ</b> ля ляpreg_match("'<b>.*?</b>'si", $first,$find); не знаю заработает или нетpreg_match("'<b>[а-яА-Я]{3,}</b>'si", $first,$find);3 это минимальная длина слова... а-я А-Я это слова из каких букв пропускать Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Mitos Опубликовано 5 Июля 2004 Автор Жалоба Поделиться Опубликовано 5 Июля 2004 Valera спасиба правда таким образом я всеравно смог отсекать только обращение к имени (2ИМЯ) а всякие "цитата" и "добавленно" как то не шибко да я его уже и так отсекаю с помощью \DВ общем без предварительного вырезания последних нафиг с помощью preg_replace наверно всеже не обойтись $tempr =" $row->post "; $tempr= preg_replace("'<b>Дополнение @.*?</b>'si", "" , $tempr , -1); $tempr= preg_replace("'<b>Цитата*?</b>'si", "" , $tempr , -1); $temp = preg_match("'<b>\D.*?</b>'si", $tempr, $find); Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.