Про 200 webpack-плагінів для перформансу на конференції JavaScript fwdays'20 | 14 березня
×Закрыть

Удалить img из строки если содержит в src домен

есть две картинки (в переменной)
1 содержит домен на левый сайт
2 локальная

<img src="https://tr-static.eodev.com/files/d0e/b070.jpeg">
<br /><img src="/tpl/images/04/02/sRYJ49AJXjwo3kMn.jpg" >
к примеру

как удалить картинку которая содержит домен? Но что бы локальная осталась?!

LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

preg_replace('/<img .*?src="http.*?>/', '', $input_lines);

$file=file("index.htnl");
$a = preg_grep("/tr-static.eodev.com/",$file,PREG_GREP_INVERT );
print_r($a);

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

Есть в мускуле записи я их перебираю поочередно. Мне нужно все картинки в записях которые имеют в src домен левый, удалить полностью тег, но оставить те которые локальные. Можно и по маске, например у картинки в src %xxx% значение, удаляем весь img с ней

В смысле, запросом, без языка программирования? Вот пример ПРОЦЕДУРЫ для Мускула, которая показывает как парсить компоненты
www.garrettpatterson.com/...​ystring-parameter-of-url

Вот более примитивный вариант
SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX(target_url, ’/’, 3), ’://’, −1), ’/’, 1), ’?’, 1)
где target_url — вставишь твоё поле.

©

язык разработки php у меня задача по всем текстовым полям найти картинки и если у картинки в src некий домен удалить этот тег и все, главное что бы остались те изображения которые локальные.

выбираешь из базы по регекспу
dev.mysql.com/...​refman/8.0/en/regexp.html
дальше уже в php правишь

можно править и на стороне mysql, но там не так удобно

а можно полный пример, я пока начинающий кодер

<img src="https://tr-static.eodev.com/files/d0e/b070.jpeg">
<br /><img src="/tpl/images/04/02/sRYJ49AJXjwo3kMn.jpg" >
такая запись в мускуле я ее получил, как убрать
<img src="https://tr-static.eodev.com/files/d0e/b070.jpeg">

Настучать по голове тому, кто в базу кладет тег с атрибутами. Серьезно. Это индусятина

если у тебя рич контент то как бы норм, ты конечно можешь маркдаун писать в БД — но суть не меняется — это тот же язык разметки

Это имхо грубое нарушение принципа модель-вью. В базе — только данные, и, возможно, некоторое состояние. Из этих данных во вью получаются или тэги, или окна, или отпечаток на бумаге, и т.д.
Уже эта тривиальная задача говорит о том, что работать с конечным представлением гораздо сложнее, чем с абстрактными данными. Значит, это не правильный способ.

неа, ты скорее всего мыслишь в другом контексте. если у тебя задача хранит текст + форматирование, то не можешь иначе это сделать кроме как хранить в определенном формате. пример — форум (тот же ДОУ :) ) где ты добавляешь форматирование к своим постам. ты можешь его — ограничить — это норм, но ты не будешь хранить в плейн текст формате, так как у тебя бизнес требование хранить вместе с форматированием.

да и вообще есть куча разных кейсов где тебе надо сохранять рич контент. хтмл — это только один из вариантов (мне к примеру больше нравится маркап — так как он более ограничен чем хтмл)

не знаю я еще регулярок, можно полный код? Вот к примеру есть картинка как ее убрать из полученой переменой?

Ну так почитайте мануал.
Якщо це вам потрібно для власного проекту, то виділіть час і отримаєте знання. Якщо ви за це з когось візьмете гроші, то найміть спеціаліста який знає, що таке регулярки.

P.S. Якщо я правильно зрозумів суть запитання, то там буде достатньо пошуку хардкодгої підстроки, а там можна і без регулярки обійтись.

не знаю я еще регулярок

Мерзость, но учить придётся. Правильнее сказать «осваивать», потому что регулярки — это надругательство над программированием как таковым, и просто неимоверное количество деградаций софта [в том числе дыр безопасности] связано именно с регулярками.

Ничего ты ее понимаешь, магл. А деградация и дыры не из-за регулярок, а из-за рукожопов

Я понимаю, что даже ассемблер это поэзия по сравнению с удобочитаемостью этой трахомуди.

Если и есть вершина дебилизма, граничащая с обфускацией кода, то это регулярки.

Если писать как дурак, то не зависимо того что именно писать будет треш и угар, если по нормальному, то мне сложно понять чем же тебе так сложны 10 метасимволов, три квантификатора и несколько конструкций, которые очень редко используют

Особенно весело там где ты НЕ ЗНАЕШЬ, какая нотация используется. И вместо быстрого шаблона все шансы получить крайне тормозной фильтр. Разумеется, теряющий данные, и вообще делающий не то, что задумано.

Потому ВСЕГДА, при применении конструкций сложнее звёздочки, нужно писать СЛОВАМИ, что задумывалось. Иначе найти багу в коде будет малореально.

так это ж... ооп и солид буквально «недавно» изобрели, можно больше не упарываться и комментить каждый шаг в коде не обязательно

<img1 src="https://tr-static.eodev.com/files/d0e/b070.jpeg">
<br /><img1 src="/tpl/images/04/02/sRYJ49AJXjwo3kMn.jpg" >

как убрать полностью

<img1 src="https://tr-static.eodev.com/files/d0e/b070.jpeg">
весь тег

добавил 1 к изображениям, потому как кодом их не отображает

Для PHP и вовсе элементарно. Строишь DOM-модель, то есть парсишь текст в документ
stackoverflow.com/...​ements-from-string-in-php

Потом уже в документе ищёшь нужные тебе теги. У нужных тегов берёшь нужные тебе атрибуты, в твоём случае src. Парсишь это счаcтье как URL
www.php.net/...​ru/function.parse-url.php
и уже тут решаешь что делать с каждым. Соответственно если решаешь удалить, то куда проще удалять элемент из DOM-модели, чем из строки. Потом DOM опять сериализируешь в строку, и вот тебе счастье.

Чаще всего НЕ удаляют ссылки на внешние ресурсы, а подменяют их на редирект, таким способом, чтобы не утекали рейтиги в поисковиках. А ещё ты можешь вытянуть картинку на сервере, обработать, подсунуть миниатюру, и соответственно под неё тиснуть ссылку (но лучше под ней отдельной строкой — так пользователю понятнее).

Ещё более кошерно — это по нажатию ссылки открыть отдельное окошко и в него тиснуть картинку как iframe с чужого источника, то есть чтобы с твоим окном даже взаимодействия не было.

Подписаться на комментарии