Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как правильно дополнить регулярку?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
event
Отправлено: 28 Ноября, 2019 - 15:28:13
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 542
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




Добрый день.

Есть код:

PHP:
скопировать код в буфер обмена
  1. $img_src = "<img src='https://site.com/baza19/2157905808568.files/image002.png' />";
  2.  
  3. preg_match('/src="([^"]+)"/', $img_src, $src);
  4.  
  5. var_dump($src);


Регулярка работает только тогда когда src="..", а когда src='...' не работает. Как поправить чтобы итак и так работало?
 
 Top
LIME
Отправлено: 28 Ноября, 2019 - 17:37:57
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




а еще кавычек может не быть вовсе
проще simplehtmldom заюзать для более сложного парсинга хтмл... регулярками это делать не так просто как может показаться

PHP:
скопировать код в буфер обмена
  1. $imgSrc1 = '<img src="https://site.com/baza19/2157905808568.files/image002.png" />';
  2. $imgSrc2 = "<img src='https://site.com/baza19/2157905808568.files/image002.png' />";
  3. $imgSrc3 = '<img src=https://site.com/baza19/2157905808568.files/image002.png />';
  4.  
  5. preg_match('/src=(["\'])?([^"\']+)(\1|\s)/', $imgSrc1, $src);
  6. var_dump($src);
  7. preg_match('/src=(["\'])?([^"\']+)(\1|\s)/', $imgSrc2, $src);
  8. var_dump($src);
  9. preg_match('/src=(["\'])?([^"\']+)(\1|\s)/', $imgSrc3, $src);
  10. var_dump($src);

не удивлюсь если можно проще

и поставь уже себе нормальный ide
и обращай внимание на подсветку

(Отредактировано автором: 28 Ноября, 2019 - 17:43:37)

 
 Top
Строитель Модератор
Отправлено: 28 Ноября, 2019 - 19:03:18
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




event
PHP:
скопировать код в буфер обмена
  1. $img_src = "<img src='https://site.com/baza19/2157905808568.files/image002.png' />";
  2.  
  3. preg_match('/src=["\']?\K[^"\'\s]+/', $img_src, $src);
  4.  
  5. var_export($src);
  6. /*
  7. array (
  8.   0 => 'https://site.com/baza19/2157905808568.files/image002.png',
  9. )
  10. */

Демо
 
 Top
LIME
Отправлено: 29 Ноября, 2019 - 13:02:17
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Строитель ну да
нам же не нужно проверять на адекватность
например
CODE (html):
скопировать код в буфер обмена
  1. <img src='https://site.com/baza19/2157905808568.files/image002.png" />
 
 Top
Строитель Модератор
Отправлено: 29 Ноября, 2019 - 13:55:03
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




LIME Радость
 
 Top
LIME
Отправлено: 30 Ноября, 2019 - 21:09:11
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Строитель и че ты ржеш)) в данном конкретном вопросе может твое решение и короче
но лучше ли?))
велосипедостроить очень увлекательно конечно
Цитата:
Новичок: Не знаите - лучше молчите! У меня дедушка в деревянном доме живёт! У НЕГО НИЧЕГО НЕ ЛОМАЕТСЯ!!!
Но у него дом из сосны, а я понимаю, что для небоскрёба нужно дерево прочнее! Поэтому и спрашиваю!!! А от вас нормального ответа недождёшся!!!
Прохожий: Самое крепкое дерево - дуб. Вот тебе технология вымачивания дуба в солёной воде, она придаёт дубу особую прочность:
Новичок: Спасибо, братан! То что нужно!!!
http://forum.php.su/topic.php?fo...1&topic=1701
 
 Top
Строитель Модератор
Отправлено: 30 Ноября, 2019 - 21:59:35
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




LIME пишет:
и че ты ржеш))
Дак потому, что ты реально смешной пример привёл ))
Я таких не встречал.
 
 Top
LIME
Отправлено: 30 Ноября, 2019 - 22:03:11
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Строитель значит ты ничего не понял
Погугли защитное программирование
И пересмотри мой шаблон
Может там не зря то что там
Парсинг штука сложная
Может юзнуть уже решенные решения? И обкатанные.
Или будем дуб вымачивать?)
 
 Top
Строитель Модератор
Отправлено: 30 Ноября, 2019 - 22:15:00
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




LIME пишет:
Погугли защитное программирование
Погуглил ) Не стало ясно, на что могут повлиять "кривые" кавычки в этой регулярке? По сути, регулярка тут нужна для получения подстроки, находящейся между двойными кавычками [или одиночными кавычками [или сразу после символа "=" и до первого пробельного символа]].

Ну допустим нашёл скрипт такую смешную строку 'https://site.com/baza19/2157905808568.files/image002.png" - как в контексте примера из первого поста это может быть использовано в злокачественных целях?
 
 Top
LIME
Отправлено: 30 Ноября, 2019 - 22:21:17
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




LIME пишет:
в данном конкретном вопросе может твое решение и короче
но лучше ли?))
на вещи надо смотреть ширше)
Мне с колокольни плевать на вопрос тс
Я тебя и его учу чему сам научился)
Твой код должен работать что бы не случилось
Зависит только от политики обработки ошибок сразу мы нахер пошлем юзера или что-то ему отдадим по умолчанию.
И еще надо думать над векторами изменения юзкейсов. Может сейчас этот код только строку берет. А завтра он же будет гораздо важнее. Думай)
Может важно это. А может лайм просто чиканутый.
(Добавление)
Строку берет в смысле просто выводит. А завтра над этой сторокой будет логика строится.*
(Добавление)
Да хрена ты толком поймешь пока сам несколько раз ноги об такие решиния не сломаешь
 
 Top
Строитель Модератор
Отправлено: 30 Ноября, 2019 - 22:30:01
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




LIME, ну как по мне, так проблемы надо решать по мере их появления, а не в их отсутствие. Я не говорю, что мой вариант шаблона прям суперский, а твой типа "фу" - я просто не считаю нужным проверять валидность ссылки (или чего-то ещё) внутри шаблона, в то время как требуется только найти соответствия. А если позже понадобится проверять валидность, то это нужно будет сделать за пределами шаблона.
 
 Top
LIME
Отправлено: 30 Ноября, 2019 - 22:54:26
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




А тебе говорю подумать зачем вообще нужно искать эту подстроку!
Ну как я и думал. Не поймешь пока
(Добавление)
Как это решение далее будет использоваться? От этого зависит выбор решения!
(Добавление)
LIME пишет:
И еще надо думать над векторами изменения юзкейсов.
LIME пишет:
От этого зависит выбор решения!
LIME пишет:
нам же не нужно проверять на адекватность
Строитель думай
(Добавление)
Строитель пишет:
то это нужно будет сделать за пределами шаблона.
LIME пишет:
От этого зависит выбор решения!
может и не надо вовсе это делать ругуляркойй
 
 Top
Строитель Модератор
Отправлено: 01 Декабря, 2019 - 10:05:31
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




LIME пишет:
зачем вообще нужно искать эту подстроку

Ответ в ПП:
event пишет:
Как поправить чтобы итак и так работало?
 
 Top
LIME
Отправлено: 03 Декабря, 2019 - 13:35:40
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Строитель пишет:
Как поправить чтобы итак и так работало?
а потом у нас невалидный хтмл в источнике и неработает))
хотя тут конечно врядли сломается
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB