Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » PHP: Регулярные выражения (RegExp, Regular, eregi, preg)

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61

Открыть новую тему     Написать ответ в эту тему

Rendom



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Учебники регулярных выражений
 
Кто сможет составить выражение для такого случая:

Код:
 
<table border=0>
<tr>
   <td>blablablabla<table border=0><tr><td>blablabla_UNIQTEXT_blablabla</td></tr></table></td>
   <td><table border=1><tr><td>blablabla</td></tr></table>666666</td>
</tr
</table>
 

Нужно удалить из этого всего кусок "<table border=0><tr><td>blablabla_UNIQTEXT_blablabla</td></tr></table>". Иными словами нужно вырезать текст от "<table" до "</table>" внутри которого есть строка "UNIQTEXT", но при этом не удалить лишнего. В результате должно получиться:

Код:
 
<table border=0>
<tr>
   <td>blablablabla</td>
   <td><table border=1><tr><td>blablabla</td></tr></table>666666</td>
</tr
</table>
 

Всего записей: 115 | Зарегистр. 27-10-2002 | Отправлено: 23:26 17-05-2005 | Исправлено: AZJIO, 04:05 09-12-2014
Tstf



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Запутался... Окей, задам вопрос так
 
Есть фраза
 
Перфоратор Vertex VR-1403"  
 
Хочу из неё убрать символ " на конце и в итоге должнополучится
 
Перфоратор Vertex VR-1403
 
Надо все сделать через функцию mb_ereg_replace   дабы работало с UTF
 
Что надо прописать?

----------
Заработок 2.0

Всего записей: 788 | Зарегистр. 22-04-2003 | Отправлено: 20:56 27-03-2012
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Tstf

Цитата:
Что надо прописать?

убрать / из кода ранее

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:07 27-03-2012
Tstf



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Сделал строку
$good_array [$key] [4] = trim(mb_ereg_replace  ( "[^a-zA-Z0-9а-яА-ЯёЁ\_\-]+", " ", $match [0] [0] ));
 
Теперь проблема с кодировкой
 
&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;  Vertex VR-1403

Всего записей: 788 | Зарегистр. 22-04-2003 | Отправлено: 21:32 27-03-2012 | Исправлено: Tstf, 21:56 27-03-2012
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Tstf

Цитата:
&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;  

http://www.fileformat.info/info/unicode/char/fffd/index.htm
код скрипта в уникоде вообще написан? или регулярка в одной кодировке, а содержимое переменной в другой?
 
через обычный preg_replace с флагом u пробовали?

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:29 28-03-2012
Spy686



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А подскажите пожалуйста как с помощью PHP преобразовать html код в текст и сохранить в txt
 
Добавлено:
 
<?php
$search = array ("'<script[^>]*?>.*?</script>'si",  // Вырезается javascript  
                 "'<[\/\!]*?[^<>]*?>'si",           // Вырезаются html-тэги  
                 "'([\r\n])[\s]+'",                 // Вырезается пустое пространство  
                 "'&(quot|#34);'i",                 // Замещаются html-элементы  
                 "'&(amp|#38);'i",  
                 "'&(lt|#60);'i",  
                 "'&(gt|#62);'i",  
                 "'&(nbsp|#160);'i",  
                 "'&(iexcl|#161);'i",  
                 "'&(cent|#162);'i",  
                 "'&(pound|#163);'i",  
                 "'&(copy|#169);'i"  
);  
 
$replace = array ("",  
                  "",  
                  "\\1",  
                  "\"",  
                  "&",  
                  "<",  
                  ">",  
                  " ",  
                  chr(161),  
                  chr(162),  
                  chr(163),  
                  chr(169)  
);  
 
$text = file_get_contents('http://adobe/union.txt');
 
$text = preg_replace('/message.*?">/i', '', $text);
$text = preg_replace('/<blockquote.*?<\/blockquote>/s', '', $text);
$text = preg_replace('/<cite>.*?<\/cite>/s', '', $text);
$text = preg_replace('/<strong>.*?<\/strong>/s', '', $text);
$text = preg_replace('/<strong>.*?<\/strong>/s', '', $text);
$text = preg_replace('/<div class="updated">.*?секунд/s', '', $text);
$text = preg_replace('/<p>,/s', '<p>', $text);
echo "$text";
$text = preg_replace($search, $replace, $text);  
 
echo "$text";
$fp = fopen('twitts.txt', 'w');
fwrite($fp, $text);
fclose($fp);
?>

Всего записей: 193 | Зарегистр. 17-12-2010 | Отправлено: 17:12 08-04-2012
holden321

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
require_once 'phpQuery-onefile.php';
$doc=phpQuery::newDocumentHTML(file_get_contents('file.html'));
file_put_contents('file.txt',pq('body',$doc)->text());

теги отфильтровать по вкусу

Всего записей: 148 | Зарегистр. 04-03-2009 | Отправлено: 19:41 08-04-2012
Spy686



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Заменить символ * вначале строки
 
preg_replace('/^\*/', '+', '*hello')
Текст, в котором было нужно сделать замену - многострочный. Нужен был модификатор m.

Всего записей: 193 | Зарегистр. 17-12-2010 | Отправлено: 19:46 08-04-2012
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Spy686

Цитата:
PHP преобразовать html код в текст и сохранить в txt  

www.php.net/strip_tags

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 19:52 08-04-2012
Nimbussr



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Извините если пишу не в ту тему.
Есть задача, которую хотелось бы по возможности решить с помощью RegExp`ов, но она не относится к Web-программированию.
 
В Excel есть столбцы в которых указывается время в виде:
Код:
0:1:26
0:19:3
0:1:17
0:1:14
0:0:59
0:0:59
0:2:6

Но Excel не понимает вышеприведенный формат времени, он понимает только когда минуты и секунды указаны двумя цифрами. Вот так:
Код:
0:01:26
0:19:03
0:01:17
0:01:14
0:00:59
0:00:59
0:02:06

Можно ли с помощью регулярных выражений первый вид столбца преобразовать ко второму виду?
Может существует другой метод (без регэкспов) это сделать?

----------
Путеводитель по радио-журналам^О Dendy^SRP

Всего записей: 1876 | Зарегистр. 31-05-2008 | Отправлено: 21:52 21-04-2012 | Исправлено: Nimbussr, 21:54 21-04-2012
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Nimbussr

Цитата:
которую хотелось бы по возможности решить с помощью RegExp`ов, но она не относится к Web-программировани

Excel FAQ (часть 5)
Excel VBA (часть 3)
 
ps: разбиваете по :, смотрите, если в численном значении число меньше или равно 9, то в строков цепляете 0 перед ним. "склеиваете" обратно.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:54 21-04-2012
Nimbussr



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
Спасибо за помощь!
По поводу ссылок на темы по Excel - пока не пишу туда, т.к. нужно определиться можно ли реализовать мою затею через регэкспы.
Если нет - тогда там попытаюсь людей потеребить.

Цитата:
разбиваете по :, смотрите, если в численном значении число меньше или равно 9, то в строков цепляете 0
Для меня пока сложновато.
Не могли бы вы пример регэкспа привести?
 
Вот, скажем, выделил я в текстовом редакторе в столбик, открыл окно замены:

 
Далее, если я правильно вас понял, нужно задать условие:
ЕСЛИ <= 9 то нужно дописать после двоеточия ноль.
 
Но тут есть загвоздка в том, что мне нужно вставлять ноль только в том случае если количество цифр после двоеточий меньше двух. А если там уже двухзначное число то его сравнивать не нужно и заменять его тоже не нужно.

Всего записей: 1876 | Зарегистр. 31-05-2008 | Отправлено: 00:40 22-04-2012
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Nimbussr
здесь мы не будем ничего этого обсуждать. хотя бы по причине того, что у каждого продукта свои особенности в регулярках.  
 
так что спрашивайте в первой теме.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 01:07 22-04-2012
Nimbussr



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
Цитата:
так что спрашивайте в первой теме
Вопрос решился средствами самого Excel, который сам добавляет недостающие нули.
Спасибо вам за наводку на темы по Excel.

Всего записей: 1876 | Зарегистр. 31-05-2008 | Отправлено: 20:13 22-04-2012
DarkSmoke



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Сижу уже целый день, читаю мануал. И не как не могу одбить дубля какую функцию мне юзать.
 
Задача: есть текст с картинками

Цитата:
<p>
 Задает выравнивание содержимого ячеек строки по горизонтали. Выравнивание осуществляется для всех ячеек в пределах одной строки. <img alt="" src="http://code2/allimage/image/articles/gori.jpg"  150px; height: 188px;" /> Если требуется применить разное выравнивание для каждой ячейки, воспользуйтесь стилями или используйте параметр align для тега или!!!!</p>
<p>
 <img alt="" img="" src="http://code2/allimage/image/articles/club.jpg" /><img alt="" src="http://code2/allimage/image/articles/gori.jpg"  150px; height: 188px;" /></p>

 
Из текста надо выдрать пути к картинкам. Сделал вот такое вот регулярное выражение:

Код:
preg_match("/<img.+?src=\"http:\/\/".$_SERVER['SERVER_NAME']."\/(.+)\".+?\/>/", $art[0]->text, $b);

 
Но возвращает мне не пути а еще кучу всякой х.. .

Код:
var_dump($b);
 
array(2) {
  [0]=>
  string(163) "<img alt="" img="" src="http://code2/allimage/image/articles/club.jpg" /><img alt="" src="http://code2/allimage/image/articles/gori.jpg"  150px; height: 188px;" />"
  [1]=>
  string(122) "allimage/image/articles/club.jpg" /><img alt="" src="http://code2/allimage/image/articles/gori.jpg"  150px; height: 188px;"
}


Всего записей: 962 | Зарегистр. 08-10-2005 | Отправлено: 01:14 29-04-2012
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DarkSmoke

Цитата:
$_SERVER['SERVER_NAME']

неплохо бы экранировать
и какое имя?

Цитата:
.+

без ограничений по жадности

Код:
preg_match_all('/.+a/', '12345a6789a', $b);
var_dump($b);

и

Код:
preg_match_all('/.+a/U', '12345a6789a', $b);
var_dump($b);


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 01:24 29-04-2012
DarkSmoke



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
неплохо бы экранировать  

Зачем если я разорвал регулярку . " $_SERVER['SERVER_NAME']  " .
 
Не понял ответа Вашего =(  
 
А получить надо только "allimage/image/articles/club.jpg
 
Идея, что бы при удалении статьи, удалять и картинки с сервера.

Всего записей: 962 | Зарегистр. 08-10-2005 | Отправлено: 01:34 29-04-2012 | Исправлено: DarkSmoke, 01:35 29-04-2012
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DarkSmoke

Цитата:
Зачем если я разорвал регулярку . " $_SERVER['SERVER_NAME']  " .

чем же это "разорвали"??  
сначала составляется строка, а потом она идет в регулярку.
 

Цитата:
Не понял ответа Вашего =(  

на пальцах - поставить ? после + в
Цитата:
\/(.+)\

или убрать ? и указать модификатор U  


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 01:36 29-04-2012
DarkSmoke



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Сделал так

Код:
 preg_match("/<img.+src=\"http:\/\/".$_SERVER['SERVER_NAME']."\/(.+)\".+?\/>/U", $art[0]->text, $b);

Получаю результат:

Цитата:
<img alt="" img="" src="http://code2/allimage/image/articles/club.jpg" /><img alt="" src="http://code2/allimage/image/articles/gori.jpg"  150px; height: 188px;" /><br/>allimage/image/articles/club.jpg<br/>

А должен был получить по идее:
1. allimage/image/articles/club.jpg
2. allimage/image/articles/gori.jpg
 

Цитата:
чем же это "разорвали"??  

Ну вот регулярное выражение началось: "/<img.+src=\"http:\/\/
Потом я закрываю кавычку и вставляю php код, после чего снова открываю и заканчиваю регулярное выражение.

Всего записей: 962 | Зарегистр. 08-10-2005 | Отправлено: 01:46 29-04-2012
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DarkSmoke
блин..
 

Цитата:
preg_match("/<img.+src=\"http:\/\/".$_SERVER['SERVER_NAME']."\/(.+)\".+\/>/U", $art[0]->text, $b);

 

Цитата:
Потом я закрываю кавычку и вставляю php код, после чего снова открываю и заканчиваю регулярное выражение.

 
вы не понимаете, как это работает, что ли?
сравните  

Код:
$t = '.*';
preg_match('/' . $t . '/', '12345678', $b);
var_dump($b);

и

Код:
$t = '.*';
preg_match('/' . preg_quote($t) . '/', '12345678', $b);
var_dump($b);

 
на пальцах - сначала составляется строка '/' . $t . '/' = '/.*/', которая затем передается в preg_match

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 01:50 29-04-2012
Spy686



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
регулярку - запятая в начале строки
не подскажете ?

Всего записей: 193 | Зарегистр. 17-12-2010 | Отправлено: 11:43 09-05-2012
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61

Компьютерный форум Ru.Board » Интернет » Web-программирование » PHP: Регулярные выражения (RegExp, Regular, eregi, preg)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru