![]() |
Помогите с регулярными выражениями
НУжно в тексте найти тэг: <table (+атрибуты)> и заменить на тэг
<table class="itemView"> Делаю: $descr = eregi_replace("<table*[^<]>",'<table class="itemView">',$_POST['itemAnn']); неработает. Подскажите правильный вариант и по возможности - скажите где я ошибся... Заранее спасибо |
Я конечно не фанат ereg, но на первый взгляд (<table*[^<]>) ты задаёшь повтор буквы "e", а затем (<table*[^<]>) выделяешь всего один знак под все аттрибуты, т.к. не указал квантификатора. Правильный вариант будет наподобии: /\<table[^\>]*\>/
|
Попробуй
$descr = eregi_replace("<table(.*)>",'<table class="itemView">',$_POST['itemAnn']); |
Цитата:
"?" после "*" нужен для того, чтобы найти вхождение до первой ">", а не до конца текста. Насколько я точно помню? |
Цитата:
АФАИК, <table?(.*?)> неверно синтаксически из за вопроса после звёздочки. А вопрос после "e" означает, что эта буква может отсутствовать, что неверно логически. Цитата:
$descr = eregi_replace("<table([^>]*)>",'<table class="itemView">',$_POST['itemAnn']); [^>] означает любой символ кроме '>'. |
Цитата:
Цитата:
Ну и последнее: После е вопроск конечно не нужен, врядли встретится тег <tabl>. А вот про Цитата:
|
Цитата:
Цитата:
Цитата:
|
Цитата:
Не могли бы вы пояснить тогда подробнее его смысл в конструкции "<table?(.*)?>"? Второй предельно понятен, а вот первый, кроме значения для буквы е "ноль или больше" никак не могу понять каое имеет. |
Цитата:
|
Цитата:
И вообще, кстати, попробовал тут собственно то что так долго все обсуждают: Код:
<?Дак вот, на это выдается ошибка: Warning: eregi_replace() [function.eregi-replace]: REG_BADRPT in /path/to/file/reg.php on line xxx bool(false) И нифига не заменяется соответственно... Если честно, в POSIX-регулярных выражениях я не слишком силен, и не стал копаться как исправить, да и тормозные они к сожалению. ИМХО, лучше для данного случая юзать PCRE, с подобными же регами. |
И впрямь как-то странно себя ведет. Что с ним, что без. Одно и тоже.
Код:
<?$_ =~ /^http\:\/\/((.+)\:(.+)\@)?(.+)$/ Конструкция ()?, а не ?(). Может я, как-то не так читаю, или автором допущена ошибка (неточность)? Обычно я использую: "(куча все, что может и не появится при разборе)?" Специально проверил вариант ?() - ? работает проверки впереди идущего символа. |
"#<table(.+?)>#is"
$text = preg_replace("#<table(.+?)>#is",...); |
Цитата:
|
| Часовой пояс GMT +4, время: 22:22. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.