Помогите с регулярными выражениями

Автор kak2z, 19 декабря 2014, 11:05:21

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

kak2z

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

[url=http://сайт][img]http://ссылка[/img][/url]

мне надо на выходе получить такое
[img]http://ссылка[/img]

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

kak2z

#1
Помогите пожалуйста))  wallbash
что делаю не так?

$post = 'бла-бла-бла[url=ссылка_куда_то1][img]картинка1.jpg[/img][/url][url=ссылка_куда_то2][img]картинка2.jpg[/img][/url] fdg sdf gsdfg sdgfsf sdg ';
$pattern = "/\[img\]([^\s]+)\[\/img\]/";
$prm_result = preg_match($pattern, $post, $matches);
var_dump($matches);


и на выходе получаю такое

array (size=2)
  0 => string '[img]http://картинка1.jpg[/img][/url][url=http://ссылка_куда_то2][img]http://картинка2.jpg[/img]' (length=103)
  1 => string 'картинка1.jpg[/img][/url][url=http://ссылка_куда_то2][img]картинка2.jpg' (length=92)


хотя мне нужна просто ссылка на первую картинку.. что не так делаю?
Если нужно что то исправить, обновить, переставить, настроить, сделать форум заново - пишите в ЛС)

GeorG

Примерно так:
$text = 'бла-бла-бла[url=http://www.simplemachines.ru/][img]http://www.simplemachines.ru/Smileys/Santa_Smilies_SMF/wallbash.gif[/img][/url] [url=http://custom.simplemachines.org][img]http://www.simplemachines.ru/Smileys/Santa_Smilies_SMF/afro.gif[/img][/url] fdg sdf gsdfg sdgfsf sdg ';
preg_match_all("/\[img\]([^\s]+)\[\/img\]/i", $text, $matches);
var_dump($matches);


На выходе будет так:
array (size=2)
  0 =>
    array (size=2)
      0 => string '[img]http://www.simplemachines.ru/Smileys/Santa_Smilies_SMF/wallbash.gif[/img]' (length=78)
      1 => string '[img]http://www.simplemachines.ru/Smileys/Santa_Smilies_SMF/afro.gif[/img]' (length=74)
  1 =>
    array (size=2)
      0 => string 'http://www.simplemachines.ru/Smileys/Santa_Smilies_SMF/wallbash.gif' (length=67)
      1 => string 'http://www.simplemachines.ru/Smileys/Santa_Smilies_SMF/afro.gif' (length=63)


Если только ссылка на первое изображение нужна, то так - $matches[0][0]

Верстка тем по шаблону, их доработка/переработка, переделка тем с версии smf 1.1 на smf 2.0. Примеры работ - insidestyle.ru
Установка модов (заточка под ваш форум); Моды под заказ; Обновление форума; Правильный перенос; Удаление/лечение вирусов; Устранения ошибок.
Обращаться в ЛС
Мой форум
Модуль анти-спама CleanTalk, сам пользуюсь
Сервера которыми сам пользуюсь - cadedic.ru

kak2z

Цитата: GeorG от 21 декабря 2014, 13:01:54$text = 'бла-бла-бла fdg sdf gsdfg sdgfsf sdg ';
preg_match_all("/\[img\]([^\s]+)\[\/img\]/i", $text, $matches);
var_dump($matches);
Спасибо, но чуть чуть не так... в моем тексте между тегами нет пробела, а в Вашем тексте есть пробел.. надо что бы работало без пробела.. 
1.jpg[/img][/url]__вот тут пробел___[url=ссылка_

Если нужно что то исправить, обновить, переставить, настроить, сделать форум заново - пишите в ЛС)

GeorG

Слишком "жадный" квантор... Вот так нужно:
$text = 'бла-бла-бла[url=http://www.simplemachines.ru/][img]http://www.simplemachines.ru/Smileys/Santa_Smilies_SMF/wallbash.gif[/img][/url][url=http://custom.simplemachines.org][img]http://www.simplemachines.ru/Smileys/Santa_Smilies_SMF/afro.gif[/img][/url] fdg sdf gsdfg sdgfsf sdg ';
preg_match_all("/\[img\]([^\s].*?)\[\/img\]/i", $text, $matches);
var_dump($matches);
Верстка тем по шаблону, их доработка/переработка, переделка тем с версии smf 1.1 на smf 2.0. Примеры работ - insidestyle.ru
Установка модов (заточка под ваш форум); Моды под заказ; Обновление форума; Правильный перенос; Удаление/лечение вирусов; Устранения ошибок.
Обращаться в ЛС
Мой форум
Модуль анти-спама CleanTalk, сам пользуюсь
Сервера которыми сам пользуюсь - cadedic.ru

kak2z

Цитата: GeorG от 21 декабря 2014, 13:22:04
Слишком "жадный" квантор... Вот так нужно:
$text = 'бла-бла-бла[url=http://www.simplemachines.ru/][img]http://www.simplemachines.ru/Smileys/Santa_Smilies_SMF/wallbash.gif[/img][/url][url=http://custom.simplemachines.org][img]http://www.simplemachines.ru/Smileys/Santa_Smilies_SMF/afro.gif[/img][/url] fdg sdf gsdfg sdgfsf sdg ';
preg_match_all("/\[img\]([^\s].*?)\[\/img\]/i", $text, $matches);
var_dump($matches);

два дня я бился над этой регуляркой)))
зато теперь знаю их основы)) спасибо большое)
Если нужно что то исправить, обновить, переставить, настроить, сделать форум заново - пишите в ЛС)