Полезная информация


----

Начать новую тему Ответить на тему
АвторСообщение

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

Аватар пользователя

Привет мастерам языка 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= можно было что-то вводить или оставлять пустым?


_________________
Подпись:
В любой непонятной ситуации – ложись спать!
          Вернуться наверх  
 

#2 

Аватар пользователя

hsimg=: и hsimg=папа Piki улавливаешь разницу? что после равно нет двоеточия, я правда не гуру в этом


_________________
Подпись:
back'up придумали трусы Ваша воля моими руками, но платно. Стучим в skype akella1900.
          Вернуться наверх  
 

#3 

Аватар пользователя

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

Я вот думал, может можно как-то задать, что после "=" и до ":" может быть любое количество любых символов или пусто, ну как при поиске?


_________________
Подпись:
В любой непонятной ситуации – ложись спать!
          Вернуться наверх  
 

#4 

Аватар пользователя

(.*?) это условие поиска, ищет он любое значение но после [hsimg=:
когда [hsimg=папа то думаю он просто пропускает нет "[hsimg=:" то дальше и нечего искать, может убрать это двоеточее


_________________
Подпись:
back'up придумали трусы Ваша воля моими руками, но платно. Стучим в skype akella1900.
          Вернуться наверх  
 

#5 

Аватар пользователя

akella1900 писал(а):

может убрать это двоеточее

нет, думаю не надо, мне кажется это двоеточие - специальный служебный символ, он отделяет идентификатор 2yuxv6q3 и как раз :(.*?) говорит о том, что после двоеточия могут быть любые символы (в разных темах эти идентификаторы разные).
Я пробовал так: '#\[hsimg=(.*?):(.*?)\], т.е. после знака = любые символы, но не заработало. Может не хватает знака \ или еще чего. Вот в чем загвоздка.


_________________
Подпись:
В любой непонятной ситуации – ложись спать!
          Вернуться наверх  
 

#6 

Аватар пользователя

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

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

Еще раз спасибо за помощь, как только с кем-то начинаешь обсуждать проблему, она тут же решается! :ya_hoo_oo:


_________________
Подпись:
В любой непонятной ситуации – ложись спать!
          Вернуться наверх  
 

#7 

Аватар пользователя

Рад что разобрались


_________________
Подпись:
back'up придумали трусы Ваша воля моими руками, но платно. Стучим в skype akella1900.
          Вернуться наверх  
 
 
Начать новую тему Ответить на тему


Дополнительные возможности

Оставить свой комментарий

Поделиться темой с помощью

Ссылки на тему

Прямая ссылка:
BB-код для форумов, сайтов, блогов:
HTML ссылка:
 


cron

Самая неформальная поддержка phpBB :P