Ru-Board.club
← Вернуться в раздел «Web-программирование»

» PHP: Регулярные выражения (RegExp, Regular, eregi, preg)

Автор: Rendom
Дата сообщения: 17.05.2005 22:26
Учебники регулярных выражений

Кто сможет составить выражение для такого случая:

Код:
<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>
Автор: N Sensey N
Дата сообщения: 17.05.2005 23:02
если текст уникальный - почему проcтой str_replace не заюзать?
Автор: Rendom
Дата сообщения: 17.05.2005 23:05
N Sensey N

Цитата:
если текст уникальный - почему проcтой str_replace не заюзать?

Да мне же не сам текст нужно удалить, но и все что его окружает тоже, но ограничено какими-то тегами.
Автор: Zeroglif
Дата сообщения: 18.05.2005 09:11

Код: s=s.replace(/(<td>.*)(<table.+UNIQTEXT.+table>)/,'$1')
Автор: Farkhad
Дата сообщения: 18.05.2005 21:30
preg_replace("{<td>[^<table]*?(<table border=0.+UNIQ_TEXT[^</table>]+?</table>)}xi", "", $string);
Автор: Rendom
Дата сообщения: 20.05.2005 00:19
Всем спасибо, я разобрался!
Автор: Smog
Дата сообщения: 11.06.2005 12:38
Привет всем!
что-то мне не соображается....

$found[1][0]="(ABCDF),(BCDGER),(DFERO),(VOIUY)";
preg_match_all("/\([A-Z]+\)/",$found[1][0],$found2);
выдает


Цитата:


Array ( [0] => Array ( [0] => (ABCDF) [1] => (BCDGER) [2] => (DFERO) [3] => (VOIUY) ) )


как сделать, чтобы скобок не было?
Автор: Advanced_Guest
Дата сообщения: 11.06.2005 12:43
Smog

Код:
$found[1][0]="(ABCDF),(BCDGER),(DFERO),(VOIUY)";
preg_match_all("/\(([A-Z]+)\)/",$found[1][0],$found2);

print_r($found2[1]);
Автор: SoftNews
Дата сообщения: 14.06.2005 14:27
Доброго всем дня,

имеется переменная вида


Код: $image = "http://website.com/images/image.jpg";
Автор: Advanced_Guest
Дата сообщения: 14.06.2005 20:05
SoftNews
Поподробнее задачу распиши (а точнее примеры)

Основная проблема: "к чему привязывать замену"

Например то что сейчас возможно>
1. все images заменить на images/thumbs (тогда > php.net/str_replace)
2. к перед последним слешем добавить строку "/thumbs" (Тогда регулярное выражение примерно $txt=preg_replace(#(.*)/(.*)#i, "\$1/thumbs/\$2",$txt); но не проверял)

Возможно ещё какие нибуть варианты.
Автор: SoftNews
Дата сообщения: 15.06.2005 02:00
Задача в принципе вот в чем идет разбор bb кодов в тексте

если использовать


Код:
$find="'\[THUMB\](.*)/(.*)\[/THUMB\]'i";

$replace="<a href=\"javascript:\" onClick=\"ShowBild('\$1/\$2');\" ><img src=\"\$1/thumbs/\$2\" style=\"border: none;\" alt=\"Увеличить картинку\" /></a>";
Автор: Advanced_Guest
Дата сообщения: 15.06.2005 08:38
ungreedy:
$find="'\[THUMB\](.*?)/(.*?)\[/THUMB\]'i";

ещё и другие слеши:

$find="'\[THUMB\](.*?)([/\\])(.*?)\[/THUMB\]'i";


правда замена теперь будет:


$replace="<a href='#' onClick=\"ShowBild('\$1\$2\$3');\" ><img src='\$1\$2thumbs\$2\$3' style='border: none;' alt='Увеличить картинку'></a>";
Автор: SoftNews
Дата сообщения: 15.06.2005 12:20
Advanced_Guest

К сожалению не работает, этот тег и текст в нем остается неизменным
Автор: Advanced_Guest
Дата сообщения: 15.06.2005 12:37
SoftNews
Ошибочка вышла:
$find="'\[THUMB\](.*?)([/\\\\])(.*?)\[/THUMB\]'i";


Код:
$find="'\[THUMB\](.*?)([/\\\\])(.*?)\[/THUMB\]'i";
$replace="<a href='#' onClick=\"ShowBild('\$1\$2\$3');\" ><img src='\$1\$2thumbs\$2\$3' style='border: none;' alt='Увеличить картинку'></a>";
$string="[THUMB]abc/def[/THUMB]\n[THUMB]gef\hef.gic[/THUMB]";
echo htmlspecialchars(preg_replace($find,$replace,$string));
Автор: SoftNews
Дата сообщения: 15.06.2005 13:28
при использовании


Код: $find="'\[THUMB\](.*?)([/\\\\])(.*?)\[/THUMB\]'i";
Автор: Advanced_Guest
Дата сообщения: 15.06.2005 13:41
SoftNews
а так ?
$find="'\[THUMB\]([^\[]*)([/\\\\])(.*?)\[/THUMB\]'i";
Автор: SoftNews
Дата сообщения: 15.06.2005 14:05
Advanced_Guest

Ура свершилось чудо заработало, спасибо друг

а можешь написать по русски что означает ([^\[]*) а то хочется все таки разобраться в самом принципе, почему именно так.
Автор: Delphi6
Дата сообщения: 15.06.2005 17:12
Однозначно вам поможет ссылка http://www.php.net/manual/ru/reference.pcre.pattern.syntax.php

Символьный класс соответствует одиночному символу обрабатываемой строки, причем сам символ должен содержаться в наборе, определяемым классом. В случае, если первым символом описания класса является '^', логика работы инвертируется: класс соответствует одиночному символу, который не содержится в наборе, определяемым классом. Если символ '^' необходим как член класса, его не следует помещать первым символом в описании класса либо необходимо экранировать при помощи обратного слеша.

К примеру, символьный класс [aeiou] соответствует любой гласной букве в нижнем регистре, в то время, как [^aeiou] соответствует любому символу, не являющемуся гласной буквой нижнего регистра. Следует понимать, что символ '^' всего лишь удобный инструмент для описания символов, не используемых в сопоставлении.
Автор: Advanced_Guest
Дата сообщения: 16.06.2005 14:10
SoftNews

([^\[]*)

() Скобки - что надо "захватывать" результат

первая и последняя [] - класс, то есть [abc] - любая буква из abc

вариант [^abc] - любой символ кроме abc.

У нас же [^\]] - Любой символ кроме \] а \] - Это ] (который мы обычным способом записать не можем, ибо это завершение символьного класса).

* - много раз повторять.

То есть такое ([^\[]*) можно читать как : Захватить любое количество любых символов подряд кроме символа ]
Автор: quasar
Дата сообщения: 06.01.2006 12:33
edit: разобрался
Автор: Danil Lab
Дата сообщения: 09.01.2006 12:31
Подскажите как удалить с помощью рег. выражений: начиная от .zip до конца
Те преобразовать из
aaaaa.zip21954656
к
aaaaa
Изменяется все кроме .zip
Автор: Brodyaga
Дата сообщения: 09.01.2006 13:38
<?php
function magic($src_str){
list($needle,$dumb)=split("\.",$src_str);
return $needle;
}
?>
Вернет строку aaaaa
Если задача именно такова, то регулярных выражений не требуется.
Автор: Cacka
Дата сообщения: 16.02.2006 19:11
Подскажите пожалуйста, как мне решить вот такую задачу :

есть строка вида :

Код: <!--QuoteBegin--> <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"90%\" align=\"center\"> <tr> <td class=\"vbquote\"> <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\"> <tr> <td class=\"vbquote\" width=\"75\" valign=\"bottom\"> <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"50px\"> <tr> <td class=\"vbquote\" width=\"28\" valign=\"top\"><img src=\"style_images/1/quotes/quot-top-left.gif\" alt=\"\" /></td> <td class=\"vbquote\" width=\"100%\" style=\"background-image: url(\'style_images/1/quotes/quote-bg.gif\'); background-position: center;\" valign=\"middle\"><span class=\"vbquote\">Цитата:</span></td> <td class=\"vbquote\" valign=\"top\"><img src=\"style_images/1/quotes/quot-top-right.gif\" alt=\"\" /></td> </tr> </table> </td> <td class=\"vbquote\" align=\"left\" style=\"background-image: url(\'style_images/1/quotes/quot-lr-bg.gif\')\" valign=\"bottom\"></td><td class=\"vbquote\" width=\"100%\" align=\"right\" valign=\"bottom\"> <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\"> <tr> <td class=\"vbquote\" width=\"100%\"> <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\"> <tr> <td class=\"vbquote\" style=\"background-image: url(\'style_images/1/quotes/quot-top-bg.gif\')\" width=\"100%\" valign=\"middle\"></td> <td class=\"vbquote\" align=\"left\" valign=\"top\"><img src=\"style_images/1/quotes/quot-top-right-10.gif\" alt=\"\" /></td> </tr> </table> </td> </tr> </table> </td> </tr> </table> <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\"> <tr> <td class=\"vbquote\" width=\"10\" style=\"background-image: url(\'style_images/1/quotes/quoting-left.gif\')\"></td> <td class=\"vbquotemain\" width=\"100%\" valign=\"top\"></td> <td class=\"vbquote\" width=\"10\" style=\"background-image: url(\'style_images/1/quotes/quoting-right.gif\')\"></td> </tr> <tr> <td class=\"vbquote\" width=\"10\" style=\"background-image: url(\'style_images/1/quotes/quot-left-bg.gif\')\"></td> <td class=\"vbquotemain\" width=\"100%\" valign=\"top\"><!--QuoteEBegin-->ТУТ ЛЮБОЙ ТЕКСТ<!--QuoteEnd--></td> <td class=\"vbquote\" width=\"10\" style=\"background-image: url(\'style_images/1/quotes/quot-right-bg.gif\')\"></td> </tr> <tr> <td class=\"vbquote\" width=\"10\" valign=\"bottom\"><img src=\"style_images/1/quotes/quot-bot-left.gif\" alt=\"\" /></td> <td class=\"vbquote\" width=\"100%\" style=\"background-image: url(\'style_images/1/quotes/quot-bot-bg.gif\')\"></td> <td class=\"vbquote\" width=\"10\" valign=\"bottom\"><img src=\"style_images/1/quotes/quot-bot-right.gif\" alt=\"\" /></td> </tr> </table> </td> </tr> </table><!--QuoteEEnd-->
Автор: Cheery
Дата сообщения: 16.02.2006 19:31
Cacka
$str="белиберда сверху";
$str=preg_replace('/<!--QuoteBegin-->.*?<!--QuoteEBegin-->(.*?)<!--QuoteEnd-->.*?<!--QuoteEEnd-->/im',"<!--QuoteBegin--><div class=\'quotetop\'>Цитата</div><div class=\'quotemain\'><!--QuoteEBegin-->$1<!--QuoteEnd--></div><!--QuoteEEnd--><br /><br />",$str);
Автор: Cacka
Дата сообщения: 16.02.2006 19:46

Цитата:
$str="белиберда сверху";


что, вообще вся? или какая-то часть? или вся белиберда, кроме <!--QuoteBegin--> и прочего?
Автор: Cheery
Дата сообщения: 16.02.2006 19:51
Cacka

Цитата:
что, вообще вся? или какая-то часть? или вся белиберда, кроме <!--QuoteBegin--> и прочего?

вся.
Автор: Cacka
Дата сообщения: 16.02.2006 21:35
Cheery
огромное спасибо! всё отлично сконвертилось
Автор: ssmsexe
Дата сообщения: 25.08.2006 20:45
есть blabalbala?&!=tratatatratata=#!blablabla
как выдернуть "tratatatratata" т.е. то что находится между ?&!= =#!
tratatatratata не является постоянным вырожением.
впрочем как и blabalba
постоянны только ?&!= =#!.
Автор: Kokoc
Дата сообщения: 25.08.2006 21:19
ssmsexe
Ответ напрашивается сам собой:

Код:
<?
preg_match("/\?&!=(.+)=#/",$str,$matches);
print $matches[1];
?>
Автор: keniODESSA
Дата сообщения: 29.08.2006 21:36
помогите пожалуйста...вот скрипт

<?
$ch = curl_init();
$url = "http://angelscity.combats.ru/inf.pl?login=Dark+Genius&short=1";
$submit_data = "";
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 120);
curl_setopt($ch, CURLOPT_HEADER, 1);
$result = curl_exec($ch);
curl_close($ch);
echo "<pre>";
echo $result;

?>

он пишет Что документ находиться here (и ссылка на то что мне надо)

как с той ссылки вытащить инфо?

Страницы: 12345678910111213141516171819202122232425262728293031323334

Предыдущая тема: PHP:Форма с двумя кнопками


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.