| imho.ws |
![]() |
|
|
|
# 1 |
|
Newbie
Регистрация: 24.01.2005
Сообщения: 24
![]() |
Помогите с регулярными выражениями
НУжно в тексте найти тэг: <table (+атрибуты)> и заменить на тэг
<table class="itemView"> Делаю: $descr = eregi_replace("<table*[^<]>",'<table class="itemView">',$_POST['itemAnn']); неработает. Подскажите правильный вариант и по возможности - скажите где я ошибся... Заранее спасибо |
|
|
|
|
# 2 |
|
МОД-Оператор ЭВМ
Регистрация: 18.04.2002
Адрес: Питер
Сообщения: 4 343
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Я конечно не фанат ereg, но на первый взгляд (<table*[^<]>) ты задаёшь повтор буквы "e", а затем (<table*[^<]>) выделяешь всего один знак под все аттрибуты, т.к. не указал квантификатора. Правильный вариант будет наподобии: /\<table[^\>]*\>/
|
|
|
|
|
# 3 |
|
Junior Member
Регистрация: 08.07.2004
Адрес: Воронеж
Сообщения: 115
![]() ![]() |
Попробуй
$descr = eregi_replace("<table(.*)>",'<table class="itemView">',$_POST['itemAnn']);
__________________
Каждая мечта тебе дается вместе с силами, необходимыми для ее осуществления. Однако тебе, возможно, придется ради этого потрудиться. Ричард Бах |
|
|
|
|
# 4 | |
|
Junior Member
Регистрация: 27.08.2005
Адрес: spb.ru
Сообщения: 100
![]() |
Цитата:
"?" после "*" нужен для того, чтобы найти вхождение до первой ">", а не до конца текста. Насколько я точно помню?
__________________
Сейчас кто-то получит яндексом по рамблеру и отлетит гугол. Последний раз редактировалось Andrey Zak; 01.10.2005 в 18:17. |
|
|
|
|
|
# 5 | ||
|
Junior Member
Регистрация: 08.07.2004
Адрес: Воронеж
Сообщения: 115
![]() ![]() |
Цитата:
АФАИК, <table?(.*?)> неверно синтаксически из за вопроса после звёздочки. А вопрос после "e" означает, что эта буква может отсутствовать, что неверно логически. Цитата:
$descr = eregi_replace("<table([^>]*)>",'<table class="itemView">',$_POST['itemAnn']); [^>] означает любой символ кроме '>'.
__________________
Каждая мечта тебе дается вместе с силами, необходимыми для ее осуществления. Однако тебе, возможно, придется ради этого потрудиться. Ричард Бах |
||
|
|
|
|
# 6 | |||
|
мод
IMHO Кодер-200(6,7,8) Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
Цитата:
Ну и последнее: После е вопроск конечно не нужен, врядли встретится тег <tabl>. А вот про Цитата:
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям! Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru Pahan-Hubbitus. |
|||
|
|
|
|
# 7 | |||
|
Junior Member
Регистрация: 27.08.2005
Адрес: spb.ru
Сообщения: 100
![]() |
Цитата:
Цитата:
Цитата:
__________________
Сейчас кто-то получит яндексом по рамблеру и отлетит гугол. Последний раз редактировалось Andrey Zak; 02.10.2005 в 16:31. |
|||
|
|
|
|
# 8 | |
|
мод
IMHO Кодер-200(6,7,8) Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
Не могли бы вы пояснить тогда подробнее его смысл в конструкции "<table?(.*)?>"? Второй предельно понятен, а вот первый, кроме значения для буквы е "ноль или больше" никак не могу понять каое имеет.
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям! Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru Pahan-Hubbitus. |
|
|
|
|
|
# 9 | |
|
Junior Member
Регистрация: 27.08.2005
Адрес: spb.ru
Сообщения: 100
![]() |
Цитата:
__________________
Сейчас кто-то получит яндексом по рамблеру и отлетит гугол. |
|
|
|
|
|
# 10 | |
|
мод
IMHO Кодер-200(6,7,8) Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
И вообще, кстати, попробовал тут собственно то что так долго все обсуждают: Код:
<?
$text = '<table align=right other_attr>dfgdfgb <table>dcfg';
$descr = eregi_replace('<table(.*?)>', '<table class="itemView">', $text);
var_dump($descr);
?>
Дак вот, на это выдается ошибка: Warning: eregi_replace() [function.eregi-replace]: REG_BADRPT in /path/to/file/reg.php on line xxx bool(false) И нифига не заменяется соответственно... Если честно, в POSIX-регулярных выражениях я не слишком силен, и не стал копаться как исправить, да и тормозные они к сожалению. ИМХО, лучше для данного случая юзать PCRE, с подобными же регами.
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям! Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru Pahan-Hubbitus. Последний раз редактировалось Hubbitus; 03.10.2005 в 11:24. |
|
|
|
|
|
# 11 |
|
Junior Member
Регистрация: 27.08.2005
Адрес: spb.ru
Сообщения: 100
![]() |
И впрямь как-то странно себя ведет. Что с ним, что без. Одно и тоже.
Код:
<?
$text = '<table align=right other_attr>dfgdfgb<table align=right other_attr> <table>dc<table align=right other_attr>fg';
preg_match_all("!<table(.*?)>!si", $text, $descr);
echo "<textarea rows=15 cols=65>";
print_r($descr);
echo "</textarea>";
?>
$_ =~ /^http\:\/\/((.+)\:(.+)\@)?(.+)$/ Конструкция ()?, а не ?(). Может я, как-то не так читаю, или автором допущена ошибка (неточность)? Обычно я использую: "(куча все, что может и не появится при разборе)?" Специально проверил вариант ?() - ? работает проверки впереди идущего символа.
__________________
Сейчас кто-то получит яндексом по рамблеру и отлетит гугол. |
|
|
|
|
# 13 | |
|
мод
IMHO Кодер-200(6,7,8) Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям! Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru Pahan-Hubbitus. |
|
|
|