- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
VK приобрела 70% в структуре компании-разработчика red_mad_robot
Которая участвовала в создании RuStore
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Помогите составить регулярку на php
Нербходимо заменить код, начинающийся с:
echo <<<HTML
<table width="100%">
<tr>
<td colspan="2" style="padding:2px;">
И заканчивающийся:
<table width="100%">
<tr>
<td style="padding:2px;" colspan="3">ok</td>
</tr>
HTML;
}
На:
<table width="100%">
<tr>
<td style="padding:2px;" colspan="3">no</td>
</tr>
HTML;
$newline=<<<EOF
echo <<<HTML
<table width="100%">
<tr>
<td style="padding:2px;" colspan="3">no</td>
</tr>
HTML;
EOF;
$text=preg_replace('@if \(count\(\$var->bad_files\)\) {.*?}@smi',$newline,$text);
Ваш вариант отрезает на первой закрытой кавычке, а их в "промежутке" много.
Зачем тут "<<<EOF"?
Оставил просто:
<table width="100%">
<tr>
<td style="padding:2px;" colspan="3">no</td>
</tr>
HTML;
';
Приведу полный код. Нужно заменить вот ЭТО:
echo <<<HTML
<table width="100%">
<tr>
<td colspan="2" style="padding:2px;">{$lang['war_result']}</td>
</tr>
<tr>
<td width="350" style="padding:2px;">{$lang['war_file']}</td>
<td width="100">{$lang['war_size']}</td>
<td width="150">{$lang['addnews_date']}</td>
<td> </td>
</tr>
HTML;
foreach( $var->bad_files as $idx => $data )
{
if ($data['file_size'] < 50000) $color = "<font color=\"green\">";
elseif ($data['file_size'] < 100000) $color = "<font color=\"blue\">";
else $color = "<font color=\"red\">";
$data['file_size'] = formatsize ($data['file_size']);
if ($data['type']) $type = $lang['war_modified']; else $type = $lang['war_not'];
echo <<<HTML
<tr>
<td style="padding:2px;">{$color}{$data['file_path']}</font></td>
<td>{$color}{$data['file_size']}</font></td>
<td>{$color}{$data['file_date']}</font></td>
<td>{$color}{$type}</font></td>
</tr>
<tr><td background="fon.gif" height=1 colspan=4></td></tr>
HTML;
}
}
elseif ($_REQUEST['folder'] == "snap") {
echo <<<HTML
<table width="100%">
<tr>
<td style="padding:2px;" colspan="3">{$lang['war_creates']}</td>
</tr>
HTML;
}
else {
echo <<<HTML
<table width="100%">
<tr>
<td style="padding:2px;" colspan="3">{$lang['war_notfound']}</td>
</tr>
HTML;
}
На ЭТО:
<table width="100%">
<tr>
<td style="padding:2px;" colspan="3">{$lang['war_notfound']}</td>
</tr>
HTML;
Зачем тут "<<<EOF"?
Затем, чтоб не экранировать кавычки.. хотя, видимо, не актуально
Приведу полный код. Нужно заменить вот ЭТО:
Открываем "продвинутый текстовый редактор" (Dreamweaver, Ultraedit, EmEditor.. даже утилита отдельная есть Text Replacer =)) CTRL+F или CTRL+R (в общем, найти и заменить), в верхнее окошко вставляем "ЭТО", в другое - то, что чуть ниже и тыкаем заменить в папке..
p.s. с небольшими "лишними" движениями можно и в notepad++ управиться..
ivan-lev, тема называется "Регулярка поиск-замена на php", вопрос был "Помогите составить регулярку на php".
Какие нахрен редакторы?!!!
ЗЫ: Для чего мне это надо - это уже другой вопрос и к делу никак не относится..
Зачем тут "<<<EOF"?
http://www.google.ru/search?client=opera&rls=ru&q=php+heredoc&sourceid=opera&ie=utf-8&oe=utf-8&channel=suggest
'#if\s*\(count\(\$var->bad_files\)\)\s*\{.+?\{\$lang\[\'war_notfound\'\]\}</td>\s*</tr>\s*HTML;#is'Попробуйте такой вариант:
<?php
if ( preg_match("#if\s*\(count\(\\\$var->bad_files\)\).*{.*}.*else.*{([^}]*{\\\$lang\['war_notfound'\]}.*)}#Uis", $string, $matches) ) {
$string = preg_replace("#if\s*\(count\(\\\$var->bad_files\)\).*{.*}.*else.*{([^}]*{\\\$lang\['war_notfound'\]}.*)}#Uis", trim($matches[1]), $string);
echo $string;
} else {
echo "Not found";
}
?>
siv1987, забыли про последнюю скобку - поправил сам, спасибо!
LovelAss, ваш вариант не проверял.. спасибо! :)