Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.04.2009, 20:10   #1
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию Регулярные выражения

Добрые господа вэб-программисты! Помогите, пожалуйста дилетанту.

У меня есть табличка. В одной из ячеек этой таблички есть еще одна табличка. Нужно регулярными выражениеми "отрезать" внешнюю табличку и полностью взять содержимое внутренней в переменную.

Вот мое регулярное выражовывание на отрезание
PHP код:
$data preg_replace("/<table(.*)<table/""<table"$data); 
, но оно почему-то ничего не находит.

PHP код:
<?php
//вот, собственно, табличка
$data "<table width=\"400px\" style=\"border:1px solid black; background-color:#cccccc;\" cellpadding=\"0\">
    <caption style=\"color:black;\"> Caption </caption>
    <tr>
        <td style=\"font-size:80%;\" align=\"center\"> First cell</td>
    </tr>
    <tr>
        <td>
            <table cellpadding=\"0\" border=\"0\" width=\"100%\" style=\"border:3px solid black; margin:0px;\" class=\"table_class\" cellspacing=\"0\">
                <tr>
                    <td class=\"td_class\" style=\"font-size:125%;\" align=\"left\" colspan=\"2\"> Second cell </td>
                </tr>
                <tr>
                    <td width=\"35%\" align=\"left\"> <span class=\"td_class\">Third cell</span></td>
                </tr>
            </table>
        </td>
    </tr>
</table>"
;

/*эта строка должна "отрезать" ненужную часть*/
$data preg_replace("/<table(.*)<table/""<table"$data);

/*а вот эта должна брать содержимое полученной таблицы*/
preg_match("/<table(.*)<\/table>/"$data$match);
?>
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 05.04.2009, 21:58   #2
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Цитата:
Сообщение от ACE Valery Посмотреть сообщение
... Нужно регулярными выражениеми "отрезать" внешнюю табличку и полностью взять содержимое внутренней в переменную.
Мешают переносы строк. Чтобы парсер рассматривал их как обычные символы в конце выражения добавляется параметр /s

Код:
preg_match("/<table(.*)<\/table>/s", $data, $match); 
preg_match("/<table(.*)<\/table>/s", $match[1], $match); 

// это чтобы проверить
$s = htmlentities($match[1]);
echo "1===$s<br>";
alexBlack вне форума Ответить с цитированием
Старый 05.04.2009, 22:29   #3
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Спасибо большое вам!!!
Я так и думала, что это из-за переносов, но вот как их убрать не догадывалась
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 14.10.2009, 10:47   #4
regman
Пользователь
 
Регистрация: 11.07.2009
Сообщений: 90
По умолчанию

не срабатывает условие

PHP код:
$patt "^[0-9]{2}";
    
$str substr($fp[$i],0,2);
    if (
$str==$patt)
    {
            ...............;
    } 
знаю точно что $str = '07'. Я как-то неправильно задал шаблон?? У меня $str всегда будет равно любому двухзначному числу, так как оно извлекается с строки, которая начинается с даты формата dd-mm-yyyy.
Apache/2.2.23 (Win32) PHP/5.3.18
Win7Pro 64
Vertrigo
regman вне форума Ответить с цитированием
Старый 14.10.2009, 11:15   #5
Metandrostenalon
Форумчанин
 
Регистрация: 03.04.2009
Сообщений: 108
По умолчанию

вы сравниваете строку 07 со строкой ^[0-9]{2}

PHP код:
$patt "/^[0-9]{2}/"//если по всей переменной, то дописать $ в конец
if (preg_match($patt$str)) {
 .....

php,javascript

Последний раз редактировалось Metandrostenalon; 14.10.2009 в 11:18.
Metandrostenalon вне форума Ответить с цитированием
Старый 14.10.2009, 11:37   #6
regman
Пользователь
 
Регистрация: 11.07.2009
Сообщений: 90
По умолчанию

спасибо. Еще вопрос. Какая разница в этом случае между функциями preg_match и ereg? Вроде обе ищут заданный шаблон в строке.
Apache/2.2.23 (Win32) PHP/5.3.18
Win7Pro 64
Vertrigo
regman вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Регулярные выражения Delphi Neymexa Помощь студентам 2 07.06.2011 23:56
Регулярные выражения и SQLite3 XeN0N Общие вопросы C/C++ 0 19.01.2009 16:52
регулярные выражения (Unicode) element Общие вопросы Delphi 3 08.12.2007 00:16
Регулярные выражения Adamant Общие вопросы C/C++ 1 26.11.2007 19:44