регулярные выражения

Ответить
 • Просмотры: 1
Аватара пользователя
Ginger

регулярные выражения

Сообщение Ginger »

Помогите, пожалуйста, составить рег. выражение:

Вот пример кода, который не работает:



Код:

Код: Выделить всё

$text = "some text with image  goes here for testing purposes";
preg_match('/user_img\/ ? ([0-9]{12})\/ ',$text,$result);
foreach( $result as $v)
echo "res - ".$v;

суть заключается в том, что нужно в данном тексте найти название директории, состоящие исключительно из цифр, и которое _всегда_ находиться после «user_img/».

Вернуть его в переменную.

Количество цифр всегда 12. Читать нужно либо 12 цифр подряд, либо до forward slash «/».
Аватара пользователя
Ginger

Re: регулярные выражения

Сообщение Ginger »

vadimiron

потому что я тут только часть в аррей указала,

а там очень много других рег. выр.

которые работают Изображение
Аватара пользователя
Prisoner

Re: регулярные выражения

Сообщение Prisoner »

Ginger, можно и через htaccess:


Цитата:



Директивы php_value и php_admin_value используются для определения значения переменной.

Форма записи:

php_value имя_переменной значение

php_admin_value имя_переменной значение

Директиву php_admin_value можно использовать только в конфигурационных файлах Apache, а php_value - и в файлах .htaccess

Пример:

php_value include_path "/home/user-www/includes"





На счет усложнения можно так:



Код:

Код: Выделить всё

$searches = array("[\']","']*?>'si","''is","']*?>'si","''si","']*?>'si", '/(?(class|style)(\s+)?=(\s+)?(\"|\\\"|\'|\`|\\\`)?(\w+)(\"|\\\"|\'|\`|\\\`)?/si');
$replaces = array("`" ,"" ,"" ,"" ,"" ,"","");

Естественно, нужно предусмотреть ситуацию когда между pre и class|style есть любые допустимые символы, а не один пробел (сделано, чтобы не загромождать паттерн)
Аватара пользователя
Ginger

Re: регулярные выражения

Сообщение Ginger »

не надо мне ИНИ редактироват'.

даже если и надо было бы, то я не раз ето делала



Призонер просто для потомков об'ясняет.



то что нужно сделат':



удалят' style и class везде кроме тага

все ж аррей

сабмитится через форму и POST
Аватара пользователя
Sham

Re: регулярные выражения

Сообщение Sham »

функцией preg_match или preg_match_all
Аватара пользователя
Sham

Re: регулярные выражения

Сообщение Sham »

PHP код:

Код: Выделить всё

$pattern = '~\\s*\



т.е. лучше инверсные наборы символов, иначе возможны неучтенные (не учтен _ там)
Аватара пользователя
vadimiron

Re: регулярные выражения

Сообщение vadimiron »

PHP код:

Код: Выделить всё

preg_match("/user_img\/(\d{12})/",$text,$result); 






У меня вот так вышло

сама цифра будет в $result[1]
Аватара пользователя
Ginger

Re: регулярные выражения

Сообщение Ginger »

vadimiron, spasibo za reshienie Изображение



est eshio vopros po vyrazheniem

(sorry za translit, no formy u menia opiat net...)



$searches = array("[\']", "'class=[^\s|>]'si");

$replaces = array("`" , "");



vopros kasaetsia reguliarnogo vyrazhenija - 'class=[^\s|>]'si



delo v tom chto ja xochu udaliat iz html koda vse class'y (i style tozhe, no eto potom po primeru mozhno sdelat)



pri etom ja xochu chto by probel pered class= udalialsia, a posle ego ostavalsia esli est





kod kotoryj napisala ja udaliaet slovo class= esli imia klassa ukazano v kavychkax - class="amega", ostajotsia "amega"

i udaliaet class= i pervuju bukvu posle, esli class bez kovychek -

class=amega, ostajotsia mega



ja xochu chtob skript iskal slovo class= i udalial ego vmeste s tom chto idiot posle = do probela ILI zakryvajushego >

(ved mozhet byt )



podskazhite gde eto popravit?

ja uzhe chto tolko ne isprobovala.. to on uimenia ves tekst udaliat, to nichego, to tolko 'class=' ...
Аватара пользователя
vadimiron

Re: регулярные выражения

Сообщение vadimiron »

Код:

Код: Выделить всё

/\sclass=['\"]\w{0,50}['\"]/

вот такой паттерн у меня получился, надеюсь будет работать Изображение

он работает как с ", так и с ', а также с их комбинацией
Аватара пользователя
vadimiron

Re: регулярные выражения

Сообщение vadimiron »

Исправление: если там вообще нет кавычек, то есть типа class=lolka, то код не будет работать, так что вот пример для любого случая, то есть независимо от того, есть ли кавычки:





PHP код:

Код: Выделить всё

preg_match("/\sclass=((['\"]\w{0,50}['\"])|(\w{0,50}))/",$text,$result); 






тогда весь найденный паттерн будет в $result[0];
Ответить

Вернуться в «Вебмастеру»