Вопрос по синтаксису php. Служебные символы. Маска поиска.

Если у вас возникают проблемы и вопросы по настройке форума phpBB3 либо выскакивают непонятные ошибки, не устанавливаются либо криво работают модификации, то этот раздел для вас. Обсуждаем все вопросы, связанные со стилями, модификациями, доработками и проблемами их использования.
Перед тем, как обратиться за помощью, обязательно заполните свой профиль (укажите ссылку на свой форум). Если есть вопрос по конкретной модификации, то обязательно пользуемся поиском по форуму, потому как, возможно, уже есть анонс этого мода и соответственно вопрос задается в теме анонса.

Модераторы: Vl@d1m1r, Lorem Ipsum, Atlas

Правила форума
----
Ответить
Аватара пользователя
tralan
Активно осваиваю Форум
Активно осваиваю Форум
Сообщения: 235
Стаж: 11 лет 3 месяца
Откуда: Таганрог
Контактная информация:

Вопрос по синтаксису php. Служебные символы. Маска поиска.

Сообщение tralan »

Привет мастерам языка php.
Вот такой вопрос.
Есть мод который выбирает из сообщений тег [hsimg=Название картинки]Ссылка на картинку[/hsimg].
В коде мода есть строка

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

'#\[hsimg=:(.*?)\]((.*?).jpg|(.*?).jpeg|(.*?).png|(.*?).gif)\[\/hsimg:(.*?)\]#i'
в которой, я так понимаю, задается маска поиска.

В сообщениях есть эти теги, я вытащил прямо из базы, как они там хранятся:

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

[hsimg=:2yuxv6q3]http://f2.s.qip.ru/14rHtv7ka.jpg[/hsimg:2yuxv6q3]
[hsimg=:2yuxv6q3]http://f4.s.qip.ru/14rHtv7kb.jpg[/hsimg:2yuxv6q3]
[hsimg=папа Piki Kvik Bamby:2yuxv6q3]http://f2.s.qip.ru/14rHtv7kd.jpg[/hsimg:2yuxv6q3]
[hsimg=мама Респект Гайна:2yuxv6q3]http://f2.s.qip.ru/14rHtv7ke.jpg[/hsimg:2yuxv6q3]
так вот эта маска выдает только те теги, в которых не указано название картинки (первые 2), а там, где есть названия
папа Piki Kvik Bamby, мама Респект Гайна не выдает

Помогите, как мне задать маску, чтобы выводились и с названием и без, т.е. чтобы после [hsimg= можно было что-то вводить или оставлять пустым?
В любой непонятной ситуации – ложись спать!
#1
Аватара пользователя
akella1900
Хорошо тут живется
Хорошо тут живется
Сообщения: 1568
Стаж: 11 лет 3 месяца
Откуда: Слявный город Николяев :-)
Контактная информация:

Вопрос по синтаксису php. Служебные символы. Маска поиск

Сообщение akella1900 »

hsimg=: и hsimg=папа Piki улавливаешь разницу? что после равно нет двоеточия, я правда не гуру в этом
back'up придумали трусы Ваша воля моими руками, но платно. Стучим в skype akella1900.
#2
Аватара пользователя
tralan
Активно осваиваю Форум
Активно осваиваю Форум
Сообщения: 235
Стаж: 11 лет 3 месяца
Откуда: Таганрог
Контактная информация:

Вопрос по синтаксису php. Служебные символы. Маска поиск

Сообщение tralan »

[hsimg=папа Piki Kvik Bamby:2yuxv6q3]http://f2.s.qip.ru/14rHtv7kd.jpg[/hsimg:2yuxv6q3]
я так понимаю двоеточие идет вместе с вот этим идентификатором, в каждой теме он разный.

Я вот думал, может можно как-то задать, что после "=" и до ":" может быть любое количество любых символов или пусто, ну как при поиске?
В любой непонятной ситуации – ложись спать!
#3
Аватара пользователя
akella1900
Хорошо тут живется
Хорошо тут живется
Сообщения: 1568
Стаж: 11 лет 3 месяца
Откуда: Слявный город Николяев :-)
Контактная информация:

Вопрос по синтаксису php. Служебные символы. Маска поиск

Сообщение akella1900 »

(.*?) это условие поиска, ищет он любое значение но после [hsimg=:
когда [hsimg=папа то думаю он просто пропускает нет "[hsimg=:" то дальше и нечего искать, может убрать это двоеточее
back'up придумали трусы Ваша воля моими руками, но платно. Стучим в skype akella1900.
#4
Аватара пользователя
tralan
Активно осваиваю Форум
Активно осваиваю Форум
Сообщения: 235
Стаж: 11 лет 3 месяца
Откуда: Таганрог
Контактная информация:

Вопрос по синтаксису php. Служебные символы. Маска поиск

Сообщение tralan »

akella1900 писал(а):может убрать это двоеточее
нет, думаю не надо, мне кажется это двоеточие - специальный служебный символ, он отделяет идентификатор 2yuxv6q3 и как раз :(.*?) говорит о том, что после двоеточия могут быть любые символы (в разных темах эти идентификаторы разные).
Я пробовал так: '#\[hsimg=(.*?):(.*?)\], т.е. после знака = любые символы, но не заработало. Может не хватает знака \ или еще чего. Вот в чем загвоздка.
В любой непонятной ситуации – ложись спать!
#5
Аватара пользователя
tralan
Активно осваиваю Форум
Активно осваиваю Форум
Сообщения: 235
Стаж: 11 лет 3 месяца
Откуда: Таганрог
Контактная информация:

Вопрос по синтаксису php. Служебные символы. Маска поиск

Сообщение tralan »

akella1900, Вы как всегда оказались прозорливы.
Попробовал убрать двоеточие, т.е. такой вариант #\[hsimg=(.*?)\] - и получилось, выводятся и те и другие. :dan_ser:
Спасибо за помощь.

Но меня немного смущало, что названия картинок (папа Piki Kvik Bamby) и идентификаторы сливались, для маски они не различались. Ну плюс еще моя настырность и упертость. Поэтому немного почитав о регулярных выражениях и специальных литералах в php, немного поэкспериментировав, я получил такой рабочий вариант: #\[hsimg=(.*?\:.*?)\] - обратным слешем я двоеточие обозначил как специальный символ, ну и после = и до :, после : и до ] могут быть или не быть любые символы.
Все, на этом я успокоился.

Еще раз спасибо за помощь, как только с кем-то начинаешь обсуждать проблему, она тут же решается! :ya_hoo_oo:
В любой непонятной ситуации – ложись спать!
#6
Аватара пользователя
akella1900
Хорошо тут живется
Хорошо тут живется
Сообщения: 1568
Стаж: 11 лет 3 месяца
Откуда: Слявный город Николяев :-)
Контактная информация:

Вопрос по синтаксису php. Служебные символы. Маска поиск

Сообщение akella1900 »

Рад что разобрались
back'up придумали трусы Ваша воля моими руками, но платно. Стучим в skype akella1900.
#7
Ответить