Форумы портала PHP.SU » » Вопросы новичков » Как правильно дополнить регулярку?

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

1. event - 28 Ноября, 2019 - 15:28:13 - перейти к сообщению
Добрый день.

Есть код:

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='...' не работает. Как поправить чтобы итак и так работало?
2. LIME - 28 Ноября, 2019 - 17:37:57 - перейти к сообщению
а еще кавычек может не быть вовсе
проще 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
и обращай внимание на подсветку
3. Строитель - 28 Ноября, 2019 - 19:03:18 - перейти к сообщению
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. */

Демо
4. LIME - 29 Ноября, 2019 - 13:02:17 - перейти к сообщению
Строитель ну да
нам же не нужно проверять на адекватность
например
CODE (html):
скопировать код в буфер обмена
  1. <img src='https://site.com/baza19/2157905808568.files/image002.png" />
5. Строитель - 29 Ноября, 2019 - 13:55:03 - перейти к сообщению
LIME Радость
6. LIME - 30 Ноября, 2019 - 21:09:11 - перейти к сообщению
Строитель и че ты ржеш)) в данном конкретном вопросе может твое решение и короче
но лучше ли?))
велосипедостроить очень увлекательно конечно
Цитата:
Новичок: Не знаите - лучше молчите! У меня дедушка в деревянном доме живёт! У НЕГО НИЧЕГО НЕ ЛОМАЕТСЯ!!!
Но у него дом из сосны, а я понимаю, что для небоскрёба нужно дерево прочнее! Поэтому и спрашиваю!!! А от вас нормального ответа недождёшся!!!
Прохожий: Самое крепкое дерево - дуб. Вот тебе технология вымачивания дуба в солёной воде, она придаёт дубу особую прочность:
Новичок: Спасибо, братан! То что нужно!!!
http://forum.php.su/topic.php?fo...1&topic=1701
7. Строитель - 30 Ноября, 2019 - 21:59:35 - перейти к сообщению
LIME пишет:
и че ты ржеш))
Дак потому, что ты реально смешной пример привёл ))
Я таких не встречал.
8. LIME - 30 Ноября, 2019 - 22:03:11 - перейти к сообщению
Строитель значит ты ничего не понял
Погугли защитное программирование
И пересмотри мой шаблон
Может там не зря то что там
Парсинг штука сложная
Может юзнуть уже решенные решения? И обкатанные.
Или будем дуб вымачивать?)
9. Строитель - 30 Ноября, 2019 - 22:15:00 - перейти к сообщению
LIME пишет:
Погугли защитное программирование
Погуглил ) Не стало ясно, на что могут повлиять "кривые" кавычки в этой регулярке? По сути, регулярка тут нужна для получения подстроки, находящейся между двойными кавычками [или одиночными кавычками [или сразу после символа "=" и до первого пробельного символа]].

Ну допустим нашёл скрипт такую смешную строку 'https://site.com/baza19/2157905808568.files/image002.png" - как в контексте примера из первого поста это может быть использовано в злокачественных целях?
10. LIME - 30 Ноября, 2019 - 22:21:17 - перейти к сообщению
LIME пишет:
в данном конкретном вопросе может твое решение и короче
но лучше ли?))
на вещи надо смотреть ширше)
Мне с колокольни плевать на вопрос тс
Я тебя и его учу чему сам научился)
Твой код должен работать что бы не случилось
Зависит только от политики обработки ошибок сразу мы нахер пошлем юзера или что-то ему отдадим по умолчанию.
И еще надо думать над векторами изменения юзкейсов. Может сейчас этот код только строку берет. А завтра он же будет гораздо важнее. Думай)
Может важно это. А может лайм просто чиканутый.
(Добавление)
Строку берет в смысле просто выводит. А завтра над этой сторокой будет логика строится.*
(Добавление)
Да хрена ты толком поймешь пока сам несколько раз ноги об такие решиния не сломаешь
11. Строитель - 30 Ноября, 2019 - 22:30:01 - перейти к сообщению
LIME, ну как по мне, так проблемы надо решать по мере их появления, а не в их отсутствие. Я не говорю, что мой вариант шаблона прям суперский, а твой типа "фу" - я просто не считаю нужным проверять валидность ссылки (или чего-то ещё) внутри шаблона, в то время как требуется только найти соответствия. А если позже понадобится проверять валидность, то это нужно будет сделать за пределами шаблона.
12. LIME - 30 Ноября, 2019 - 22:54:26 - перейти к сообщению
А тебе говорю подумать зачем вообще нужно искать эту подстроку!
Ну как я и думал. Не поймешь пока
(Добавление)
Как это решение далее будет использоваться? От этого зависит выбор решения!
(Добавление)
LIME пишет:
И еще надо думать над векторами изменения юзкейсов.
LIME пишет:
От этого зависит выбор решения!
LIME пишет:
нам же не нужно проверять на адекватность
Строитель думай
(Добавление)
Строитель пишет:
то это нужно будет сделать за пределами шаблона.
LIME пишет:
От этого зависит выбор решения!
может и не надо вовсе это делать ругуляркойй
13. Строитель - 01 Декабря, 2019 - 10:05:31 - перейти к сообщению
LIME пишет:
зачем вообще нужно искать эту подстроку

Ответ в ПП:
event пишет:
Как поправить чтобы итак и так работало?
14. LIME - 03 Декабря, 2019 - 13:35:40 - перейти к сообщению
Строитель пишет:
Как поправить чтобы итак и так работало?
а потом у нас невалидный хтмл в источнике и неработает))
хотя тут конечно врядли сломается

 

Powered by ExBB FM 1.0 RC1