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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
ManHunter



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

Код:
 
<?
$phone = "dfa 34 dfa 2 dfdf  sdfas df    +7 - (914)   -  345- 21  -10 sdf asdfsadfasd +7 - (914)   -  345- 21  -10";
 
$phone = preg_replace('#[^\d[:alpha:]]#', '', $phone);
preg_match_all('#(7|8)(\d{3})(\d{3})(\d{2})(\d{2})#', $phone, $matches);
print_r($matches[0]);
 

 

Код:
 
Array
(
    [0] => 79143452110
    [1] => 79143452110
)
 


----------
"На любое мое движение ваша реакция предусмотрена,
В лучшем случае - равнодушие, в худшем случае - патология..." (C) Егор Летов

Всего записей: 3091 | Зарегистр. 20-03-2004 | Отправлено: 13:00 20-03-2015
Grishanenko

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Пытаюсь почистить файл от строк типа типа:

Код:
"children":[{"url":"https://www.somesite2.com/link1/","title":"title123","ID":1043242073,"docshellID":1108,"referrer":"http://www.somesite2.com/showthread.php?t=123456","docIdentifier":3,"scroll":"0,0"}]

Написал такое выражение:

Код:
"children":[[]{[^]]*]

И все было хорошо, пока не попалась такая строка:

Код:
"children":[{"url":"https://www.somesite2.com/link1/","title":"title123 [title345] title 678","ID":1043242073,"docshellID":1108,"referrer":"http://www.somesite2.com/showthread.php?t=123456","docIdentifier":3,"scroll":"0,0"}]

Лишняя пара квадратных скобок внутри все испортила. Есть ли способ это обойти? Думается что если в строке всегда есть одна открывающая скобка, то окончанием выражения должна быть закрывающая скобка, а если появляется вторая открывающая скобка, то нужно пропустить первую закрывающую и искать вторую.

Всего записей: 719 | Зарегистр. 17-06-2006 | Отправлено: 09:43 22-03-2015
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Grishanenko
что значит "подчистить" файл? что еще в нем есть?
это json, его можно поправить без регулярки.

Всего записей: 15111 | Зарегистр. 20-09-2014 | Отправлено: 09:46 22-03-2015
Grishanenko

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Да, это json база от FireFox. Чищу ее (уменьшаю размер) от параметров давно неиспользуемых плагинов, которые на каждую вкладку прицепили свои настройки. Или же просто информация, которая мне не нужна (referrer, openerGroup, owner_b64, children, possibleparent). Найти простой редактор, который может удалить или заменить все строки с соответствующим названием сразу (а не в ручном режиме по одной) у меня не получилось. Потомоу и подумал что удаление через RegExp (программа для пакетной обработки UV FilesCorrector) - более простой вариант.

Всего записей: 719 | Зарегистр. 17-06-2006 | Отправлено: 11:01 22-03-2015
Mavrikii

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

Цитата:
Потомоу и подумал что удаление через RegExp (программа для пакетной обработки UV FilesCorrector) -

тогда зачем пишете в тему о php регулярках??
 
если используете php, то считываете файл, далее json_decode, удаляете что не нужно, json_encode и снова сохраняете в файл.

Всего записей: 15111 | Зарегистр. 20-09-2014 | Отправлено: 21:30 22-03-2015
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вот кусок:
 

Код:
$color_advert = Array('4444FF', 'FF0000', 'F900FF', '0064FF', '00E2FF', '06FF00', 'FFC200');
$_POST["text"] = preg_replace("#\[(b)\](.*)\[/\\1\]#iU", "<$1 style=\"color: #". $color_advert[rand(0, count($color_advert))] .";\">$2</$1>", $_POST["text"]);

 
Как сделать, чтоб если $_POST["text"] = "<b>1</b><b>2</b>"; то число 1 и число 2 были разными цветами с массива?

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 18:54 23-07-2015
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar
код то предназначен для bbcode, ну так исправили бы аналогично для вашего, делов то
 

Код:
$text = "<b>1</b><b>2</b>";
$color_advert = array('4444FF', 'FF0000', 'F900FF', '0064FF', '00E2FF', '06FF00', 'FFC200');  
echo preg_replace_callback("#<(b)>(.*)</\\1>#iU", function($m) use($color_advert) {
    return "<" . $m[1] . " style=\"color: #" . $color_advert[array_rand($color_advert)] . ";\">" .
    $m[2] . "</" . $m[1] . ">";
} , $text);

Всего записей: 15111 | Зарегистр. 20-09-2014 | Отправлено: 07:58 24-07-2015
Sutar



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

Код:
Parse error: syntax error, unexpected T_FUNCTION in D:\localhost\www\profilejs.php on line 107

 
Line: 107

Код:
$_POST["text"] = preg_replace_callback("#<(b)>(.*)</\\1>#iU", function($m) use($color_advert) {return "<" . $m[1] . " style=\"color: #" . $color_advert[array_rand($color_advert)] . ";\">" . $m[2] . "</" . $m[1] . ">" ; } , $_POST["text"]);

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 11:31 24-07-2015
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar
Не пользуйтесь древней версией php
Иначе тогда делать отдельной функцией - посмотрите приперы в мануале по preg_replace_callback

Всего записей: 15111 | Зарегистр. 20-09-2014 | Отправлено: 12:49 24-07-2015
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
php-5.6.11 подойдет?

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 17:39 24-07-2015 | Исправлено: Sutar, 18:12 24-07-2015
Mavrikii

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

Цитата:
php-5.6.11 подойдет?

зачем спрашивать если можно попробовать или просто почитать мануал?
 
http://php.net/manual/en/functions.anonymous.php

Цитата:
5.3.0    Anonymous functions become available.

то есть у вас версия была даже ниже этой.

Всего записей: 15111 | Зарегистр. 20-09-2014 | Отправлено: 20:03 24-07-2015
erroraccount

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

Код:
 
И.И.Иванов
И. И. Иванов
И.Иванов
И. Иванов
Иванов И. И.
Иванов И.
Иванов И.И.
 

 
Сделал так:

Код:
 
$pattern = '
/[А-ЯЁ]\.[А-ЯЁ]\.[А-ЯЁ][а-яё]+\b|
[А-ЯЁ]\.\s[А-ЯЁ]\.\s[А-ЯЁ][а-яё]+\b|
[А-ЯЁ]\.[А-ЯЁ][а-яё]+\b|
[А-ЯЁ]\.\s[А-ЯЁ][а-яё]+\b|
[А-ЯЁ][а-яё]+\s[А-ЯЁ]\.\s[А-ЯЁ]\.\b|
[А-ЯЁ][а-яё]+\s[А-ЯЁ]\.\b|
[А-ЯЁ][а-яё]+\s[А-ЯЁ]\.[А-ЯЁ]\.\b/u';
 

но в этом случае не удаляются фамилии, которые с пробелами и если фамилия через дифис, то вторая часть фамилии тоже остается. Помогите пожалуйста составить чтобы фамилии удалялись   целиком при любых комбинациях.

Всего записей: 66 | Зарегистр. 01-02-2016 | Отправлено: 11:02 19-04-2016 | Исправлено: erroraccount, 11:02 19-04-2016
Vitus_Bering



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

Код:
 
$pattern = '  
 /[А-ЯЁ]\.\s*[А-ЯЁ]\.\s*[А-ЯЁ][-а-яё]+\b|  
 [А-ЯЁ]\.\s*[А-ЯЁ][-а-яё]+\b|  
 [А-ЯЁ][-а-яё]+\s*[А-ЯЁ]\.\s*[А-ЯЁ]\.\b|  
 [А-ЯЁ][-а-яё]+\s*[А-ЯЁ]\.\b/u';
 


Всего записей: 936 | Зарегистр. 30-09-2005 | Отправлено: 12:11 19-04-2016
erroraccount

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо. А почему не хватало этой звездочки? Она добавляет любой символ после пробела или множит пробел?

Всего записей: 66 | Зарегистр. 01-02-2016 | Отправлено: 12:30 19-04-2016
Vitus_Bering



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
квантификатор Звёздочка означает 0, 1 или любое число раз ({0,}).
Например, «go*gle» соответствует ggle, gogle, gooooooooooooooooooooogle.

Всего записей: 936 | Зарегистр. 30-09-2005 | Отправлено: 12:45 19-04-2016
erroraccount

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Что-то все равно фамилии с пробелами не удалились. И фамилия с дифисом тоже наполовину осталась.
 
Добавлено:
Вот весь код целиком. В тексте некоторые фамилии в разных комбинациях. Помогите пожалуйста, чтобы все фамилии можно было удалить.
 

Код:
<?php
$string = 'ЗАВТРАК у тов. В.М.МОЛОТОВА
        ПО СЛУЧАЮ ПЯТНАДЦАТИЛЕТИЯ СОВЕТСКО-ТУРЕЦКОГО ДОГОВОРА
        В связи с исполнившимся 15-летием первого советско-турецкого договора о дружбе, 23 марта с. г. председатель Совета народных комиссаров Союза ССР тов. В.М.Молотов дал завтрак чрезвычайному и полномочному послу Турецкой республики - г-ну Зекяи Апайдын.
        На завтраке присутствовали товарищи: К.Е.Ворошилов, Ворошилов К. Е., Ворошилов К. Е., К. Е. Ворошилов, Л.М.Каганович, Г.К.Орджоникидзе, А.И.Микоян, В.И.Меж-Лаук, Н.К.Антипов, А.П.Розеигольп, Н.Н.Крестинский, А.С.Бубнов, Ю.Л.Пятаков, Б.С.Стомоняков, А.И.Егоров, С.М.Буденный, А.М.Могильный, а также ответственные сотрудники Народного комиссариата по иностранным делам и высшие чины турецкого посольства. Во время завтрака тов. В.М.Молотов и г-н Зекяи Апайдын обменялись приветственными речами.';
 
$pattern = '
/[А-ЯЁ]\.[А-ЯЁ]\.[А-ЯЁ][а-яё]+\b|
[А-ЯЁ]\.\s*[А-ЯЁ]\.\s*[А-ЯЁ][а-яё]+\b|
[А-ЯЁ]\.\s*[А-ЯЁ][а-яё]+\b|
[А-ЯЁ][а-яё]+\s*[А-ЯЁ]\.\s*[А-ЯЁ]\.\b|
[А-ЯЁ][а-яё]+\s*[А-ЯЁ]\.\b|
[А-ЯЁ][а-яё]+\s*[А-ЯЁ]\.[А-ЯЁ]\.\b/u';
$replacement = '';
echo preg_replace($pattern, $replacement, $string);
?>

Всего записей: 66 | Зарегистр. 01-02-2016 | Отправлено: 13:05 19-04-2016
Vitus_Bering



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

Код:
 
$pattern = '[А-ЯЁ]\.\s*[А-ЯЁ]\.\s*[А-ЯЁ]+\b';       // для: В.М.МОЛОТОВА     
$pattern .= '|[А-ЯЁ]\.\s*[А-ЯЁ]\.\s*[А-ЯЁ][а-яё]+\-[А-ЯЁ][а-яё]+\b';       // для: В.И.Меж-Лаук  
$pattern .= '|[А-ЯЁ]\.\s*[А-ЯЁ]\.\s*[-А-ЯЁ][-а-яё]+\b';        // для: В.М.Молотов  
$pattern .= '|[А-ЯЁ][а-яё]+\s+[А-ЯЁ]\.\s*[А-ЯЁ]\.\,*';         // для: Ворошилов К. Е. Ворошилов К.Е.       
      
 $string = preg_replace("/$pattern/us", '', $string);  
 

Всего записей: 936 | Зарегистр. 30-09-2005 | Отправлено: 14:44 19-04-2016 | Исправлено: Vitus_Bering, 14:44 19-04-2016
Mavrikii

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

Цитата:
[А-ЯЁ][а-яё]+\s*[А-ЯЁ]\.\s*[А-ЯЁ]\.\b|  
[А-ЯЁ][а-яё]+\s*[А-ЯЁ]\.\b|  

как вы думаете представляется перенос строки и что он делает в этой ситуации?

Всего записей: 15111 | Зарегистр. 20-09-2014 | Отправлено: 19:43 19-04-2016
erroraccount

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

Всего записей: 66 | Зарегистр. 01-02-2016 | Отправлено: 21:08 19-04-2016
Vitus_Bering



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

Код:
$string = str_replace($string[0], strtolower($string[0]), $string);

Всего записей: 936 | Зарегистр. 30-09-2005 | Отправлено: 21:19 19-04-2016
Открыть новую тему     Написать ответ в эту тему

Страницы: 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