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

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



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar
$str = trim(preg_replace('/\s+/',' ', $str));
по краям можно и регуляркой, но лень писать

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

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



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

Цитата:
по краям можно и регуляркой, но лень писать

что-то не понял, что можено по краям... выж вроде использовали trim() _ убрать в начале и в конце.
и replace() убираем в середине...
что не так?

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



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Sutar
Cheery про то, что вместо trim() использовать регулярку.

Всего записей: 623 | Зарегистр. 22-07-2011 | Отправлено: 11:41 24-07-2012
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
можете дописать, когда будет время?)

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



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

Код:
[urle="http://site.ru"]ddd[/urle]

 
перед заносом в БД, оно должно быть так:
 

Код:
<a href="http://site.ru">ddd</a>

 
вот, только что-то не получается:
 

Код:
$_POST["message"] = preg_replace('#(?<!\])\b[urle=[^\s\[<]+#i', "<a target=\"_blank\" href=\"$0\">$0</a>", $_POST["message"]);

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 13:31 31-07-2012 | Исправлено: Sutar, 13:32 31-07-2012
Cheery



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

Код:
$str = '[urle="http://site.ru"]ddd[/urle]';
echo preg_replace('#\[urle=(\'|")(.*)\\1\](.*)\[\/urle\]#iU', "<a target=\"_blank\" href=\"$2\">$2</a>", $str);


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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 20:06 31-07-2012
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
спасибо, а вот ...ce('#\[urle=(\'|")(.*)\\1\](.*)\[\/urle\]#iU'... нужна там?

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 20:41 31-07-2012
Cheery



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

Цитата:
нужна там?

да


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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 20:43 31-07-2012
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
а что оно означает? не могу найти в интернере....

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 22:33 31-07-2012
Cheery



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

Цитата:
не могу найти в интернере....

http://php.net/manual/en/reference.pcre.pattern.modifiers.php

Цитата:
U (PCRE_UNGREEDY)
This modifier inverts the "greediness" of the quantifiers so that they are not greedy by default, but become greedy if followed by ?. It is not compatible with Perl. It can also be set by a (?U) modifier setting within the pattern or by a question mark behind a quantifier (e.g. .*?).



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

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



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

Цитата:
Cheery  
а что оно означает? не могу найти в интернере....

http://www.cyberforum.ru/php-regex/thread227459.html

Всего записей: 193 | Зарегистр. 17-12-2010 | Отправлено: 22:44 31-07-2012
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
Spy686
тоесть он захватывает всё? ну вроде как не жадный "определённое количеств" а жадный - всё. так я понимаю?

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 23:21 31-07-2012
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar
ну там же написано все и даже пример приведен.
.* "скушает" все до последнего условия идущего после *
текст  
baaaabccccb
/b.*b/ вытащит baaaabccccb
/b.*?b/ = /b.*b/U и вытащит baaaab

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 23:31 31-07-2012 | Исправлено: Cheery, 23:31 31-07-2012
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
Спасибо)
у меня проблема с одним вашим скриптом...
Вы мне дали скрипт, убрать лишние пробелы... тоесть если текст такой:
 
"    (много пробелов)   Привет...   (много пробелов)  как дела? (много пробелов)   "
в итоге получился должно:
"Привет... как дела?"
 
вот попробуйте сами:
 

Код:
<?php
if(isset($_POST["submit_add"]))
{
    $_POST["message"] = trim(preg_replace("/\s+/"," ", $_POST["message"]));
}
?>
<form method="post" action="">
<textarea name="message" id="message" rows="3" cols="50" style="width:150px;"><?php if(isset($_POST["submit_add"])) {echo "$_POST[message]";} else {echo "РРРР";} ?></textarea>
<br/>
<input type="submit" name="submit_add" value="Добавить" style="width:95px;"/>
</form>

 
такое только с элементом "Р" большим, всё другое - норм.

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 23:23 02-08-2012
Cheery



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

Цитата:
такое только с элементом "Р" большим

? такое - что ? с каким элементом?

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 23:26 02-08-2012
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
если писать "РРРР" получится "Р Р Р Р" кнопка с "Добавить" в иероглифы.
а на странице на сайте, у меня заместь всех "Р" квадратик (иероглиф не известный)

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 23:36 02-08-2012
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar
 с кодировками разберитесь сначала на странице.
уникод? тогда /u в конце регулярки

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 23:39 02-08-2012
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
если у меня используется не один preg_replace()
 
нужно чтоб было во всех так?
 

Код:
$str = preg_replace(".....\U", "...", $str);

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 00:07 03-08-2012
Cheery



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

Цитата:
нужно чтоб было во всех так?  

нет. /u и буква "u" маленькая.
говорит о том, что используется уникод

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

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



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

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 00:25 03-08-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