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

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

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

Цитата:
А можете ещё написать или найти

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

Всего записей: 120 | Зарегистр. 24-09-2006 | Отправлено: 19:30 09-11-2011
Karpenkos

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

Всего записей: 142 | Зарегистр. 08-10-2011 | Отправлено: 20:43 09-11-2011
Nagolder

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Karpenkos
http://yandex.ru/yandsearch?text=%D1%80%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D0%B5+%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5+%D0%B2%D1%8B%D0%B1%D0%BE%D1%80+%D1%81%D1%81%D1%8B%D0%BB%D0%BE%D0%BA&lr=101
 
И сверху вниз... Если совсем начинающий, то можно начать с http://www.phpfaq.ru/regexp
 
PS. Не надо считать меня гуру в этом вопросе, я сам только постигаю эту тему. И здесь на форуме спрашиваю, и в поисковиках ищу. Просто когда стоит вопрос "Напиши за меня" - никакого желания помогать не возникает. А если что-то не получается в процессе, то специалисты руборда помогут обязательно, проверено на себе

Всего записей: 120 | Зарегистр. 24-09-2006 | Отправлено: 23:55 09-11-2011
Karpenkos

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Nagolder
Также, перевод ссылки. идет с приставкой http а если без неё, то ссылки не будет.
Будет просто текст, вот в этом моя проблема.

Всего записей: 142 | Зарегистр. 08-10-2011 | Отправлено: 16:04 10-11-2011
Nagolder

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

Цитата:
вот в этом моя проблема.

Да нет никакой проблемы! Есть просто нежелание почитать основы. Никто за Вас делать не будет и готовые скрипты на блюдечке не поднесет. Я дал пример раньше. Надо просто посмотреть, что на что меняется и при каких условиях. И отредактировать в своих целях. Понемногу учась и получая опыт.
 
А вот если не будет получаться в процессе обучения, то тогда нерабочие примеры в студию. Народ укажет на ошибки и подскажет верный путь.
 
И только так...

Всего записей: 120 | Зарегистр. 24-09-2006 | Отправлено: 01:54 12-11-2011
Karpenkos

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

Всего записей: 142 | Зарегистр. 08-10-2011 | Отправлено: 17:29 12-11-2011
Nagolder

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

Цитата:
ну а помочь, можете?

Ну а я что делал все это время????? Вместо того, чтоб лежать на диване в выходные и смотреть телевизор, я в меру своих сил и знаний объяснял и показывал, что и как надо делать.
 
Если Вам надо готовые рабочие оттестированные скрипты, а не помощь при обучении - то добро пожаловать на любой фриленс-ресурс. Там Вам за конкретную денежку все сделают и не надо будет бить пальцы о клаву, выпрашивая подачки.
 
А если хотите научиться - выше уже написал я, что и как Вам надо делать.
Выбор за Вами. А у меня, как и большинства форумчан, нет ни времени ни желания делать за Вас Вашу работу. И помогать не желающему учиться - тоже.

Всего записей: 120 | Зарегистр. 24-09-2006 | Отправлено: 17:42 12-11-2011
tolyn77



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
всем привет!
 
подскажите как переделать?
$vals[$k] = "'" . ereg_replace("([^\\])'","\1".chr(92)."'",ereg_replace('["\']',"&quot;",$GLOBALS[$v])) . "'";
на preg_replace?
так не работает
$vals[$k] = "'" . preg_replace('([^\\])'',"\1".chr(92)."'",preg_replace('["\']',"&quot;",$GLOBALS[$v])) . "'";
заранее благодарен

Всего записей: 1503 | Зарегистр. 07-09-2004 | Отправлено: 08:51 23-11-2011 | Исправлено: tolyn77, 10:00 23-11-2011
duhon



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
я переделал но странная регулярка, непонятно зачем такое писать
 
$vals[$k] = "'" . preg_replace('/([^\\\])/','$1'.chr(92)."'", preg_replace('/["\']/',"&quot;", $GLOBALS[$v])) . "'";
 
что не понятно
1) preg_replace('/["\']/',"&quot;", $GLOBALS[$v])   это уже можно заменить функциями типа htmlentities, htmlspecialchars
 
2) первая регулярка ([^\\]) грубо говоря делает следущее, находит любой 1 символ, кроме \, и ставит за ним знак \.
тоесть текст aabb превратиться в a\a\b\b\
 
надеюсь тебе оно надо.

Всего записей: 8 | Зарегистр. 23-11-2011 | Отправлено: 16:34 23-11-2011
tolyn77



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
duhon
спасибо, ошибка исчезла! у нас сайт разрабатывала одна команда и после обновления софта вот такие вот вещи появились, а исправлять только за деньги Я сам не программер в регулярках вообще очень туго понимаю
а это как можно изменить?
text => ereg_replace("\r\n", "\\r\\n", addslashes($r["text"]))
заранее благодарен

Всего записей: 1503 | Зарегистр. 07-09-2004 | Отправлено: 16:39 23-11-2011 | Исправлено: tolyn77, 16:41 23-11-2011
duhon



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
вот это уже очень смешно, замени ее на addslashes($r["text"]) и все будет такое же.
дело в том что регулярка ничего не делает, заменят символы на сами себя тоесть ничего не меняеться.
но если нужно пользуйся preg_replace("/\r\n/", "\\r\\n", addslashes($r["text"]))
 
что бы перевести регулярку с ereg на прег как минимум попробуй поставить ограничителя регулярки, тоесть "\r\n" => "/\r\n/" или "#r\n#" или "%\r\n%" или "|\r\n|" или "~\r\n~"
тоесть каким символом открыл таким и закрой, но что бы этот ограничительный символ не присуствовал внутри самой регулярки по аналогии с " и '
 
кстати я догадываюсь зачем такую странную регулярку хотели сделать, возможно он опечатался.
замени на preg_replace("/\r?\n/", "\\r\\n", addslashes($r["text"]))
 
это нормализирует разделение строк между разными операционками, в данном случае выставленно для виндовса
 
или дла юникса  
preg_replace("/\r\n/", "\\n", addslashes($r["text"]))

Всего записей: 8 | Зарегистр. 23-11-2011 | Отправлено: 16:51 23-11-2011 | Исправлено: duhon, 17:00 23-11-2011
tolyn77



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

Цитата:
тоесть текст aabb превратиться в a\a\b\b\  

а у меня превращается в a'a'b'b' хотя должен быть aabb

Всего записей: 1503 | Зарегистр. 07-09-2004 | Отправлено: 15:56 09-12-2011
duhon



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
вот это конструкция echo "'" . preg_replace('/([^\\\])/','$1'.chr(92)."'", preg_replace('/["\']/',"&quot;", 'aabb')) . "'";
делает на выходе 'a\'a\'b\'b\''
 
теперь по пунктам кто что делает
1)  preg_replace('/["\']/',"&quot;", 'aabb')   превращает aabb в aabb, тоесть ничего не делает, но если входящий текст будет a'ab'b то превратит в a&quot;ab&quot;b
 
-потом получившийся текст передаеться в следующую функцию выглядит приблизительно так
2) preg_replace('/([^\\\])/','$1'.chr(92)."'", 'aabb')  превращает текст aabb в a\'a\'b\'b\'   тоесть после каждого символа ставит \'   , я незнаю зачем это может понадобится.
 
-потом текст a\'a\'b\'b\'  еще дополнительно обворачиваеться "'" . a\'a\'b\'b\'   . "'" и на выходе 'a\'a\'b\'b\''
 
и это уже на голову вообще не налазит, вместо этой страшно непонятной констукции наверно можно воспользоваться функциями типа htmlentities, htmlspecialchars
и все проблемы исчезнут

Всего записей: 8 | Зарегистр. 23-11-2011 | Отправлено: 17:07 09-12-2011
tolyn77



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
duhon
что то блин совсем запутался
"У вас ошибка в запросе. Изучите документацию по используемой версии MySQL на предмет корректного синтаксиса около 'a\'a\'b\'b\'''' на строке 1"

Всего записей: 1503 | Зарегистр. 07-09-2004 | Отправлено: 08:39 12-12-2011
duhon



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
попробуй оставить только это preg_replace('/["\']/',"&quot;", 'aabb');

Всего записей: 8 | Зарегистр. 23-11-2011 | Отправлено: 16:16 12-12-2011
holden321

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
нужно перебрать из html все тэги tr внутри которых втречается определенная строка
текст может находиться где угодно включая атрибуты какого-либо элемента и т.д.
подскажите как сделать
 
в php все это происходит

Всего записей: 148 | Зарегистр. 04-03-2009 | Отправлено: 17:30 20-12-2011 | Исправлено: holden321, 17:31 20-12-2011
DarkSmoke



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Мучаюсь ужасно.
Нужно удалить из текста первый абзац, т.е. от <p> до </p>.
 

Цитата:
<p><img alt="" src="/companyLogo/akva-lux.png"  170px; height: 170px;" /></p>
<p>В основе управления бизнесом лежит разработка стратегии, ее адаптация к специфике компании и реализация. Стратегия компании — это комплексный план управления, который должен укрепить положение компании на рынке и обеспечить координацию усилий, привлечение и удовлетворение потребителей, успешную конкуренцию и достижение глобальных целей. Процесс выработки стратегии основывается на тщательном изучении всех возможных направлений развития и деятельности и заключается в выборе общего направления, осваиваемых рынков, обслуживаемых потребностей, методов конкуренции, привлекаемых ресурсов и моделей бизнеса. Другими словами, стратегия означает выбор компанией пути развития, рынков, методов конкуренции и ведения бизнеса.</p>
 

делаю так

Код:
ereg_replace("(<p>)(.*)(<\/p>)",'',$this->input->post('redactor_content'));

но так он все удаляет и не чего не остается.
Как удалить только первый встретившийся <p> </p>?

Всего записей: 962 | Зарегистр. 08-10-2005 | Отправлено: 00:40 02-01-2012 | Исправлено: DarkSmoke, 01:56 02-01-2012
Cheery



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

Цитата:
"(<p>)(.*?)(<\/p>)"

ps: ereg_replace с 5.3 уже deprecated
использование его нежелательно, так как в будущих версиях php от этой функции откажутся.
 
хотя нет, это не поможет..
используйте preg_replace - там есть ограничение на количество совпадений

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

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



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
попробуй так
preg_replace('/<p>.*?<\/p>/', '', $in_text);

Всего записей: 8 | Зарегистр. 23-11-2011 | Отправлено: 12:57 12-01-2012
d1200

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Люди добрые, помогите, плиз. Пол дня мучаюсь, пытаясь понять регекспы.
А нужна-то фигня полная: найти ссылки в html вида href="ссылка" и заменить на href="домен/ссылка", при условии, что не указан домен.
 
Никак не могу понять как сделать !="http"
Где функция отрицания в регулярных выражениях?
 
 
Заранее благодарю за помощь

Всего записей: 2 | Зарегистр. 03-05-2011 | Отправлено: 18:34 13-01-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