Продолжаем тему регулярок, которых многие боятся ) Пред дальнейшим прочтением рекомендую ознакомиться с прошлым материалом.
1. Получаем ссылку на видео с вставки ютуб. Видео имеет обычно такой вид:
<iframe src="https://www.youtube.com/embed/xxxxxxxx" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe>
Где xxxxxxxx код видео. Чтобы его получить используем:
<iframe[^<>]*?src=['"]([^<>]*?)['"]
Получаем 1 группу. В результате получим https://www.youtube.com/embed/xxxxxxxx
Если на странице не один тег iframe тогда подойдет такой код
<iframe[^<>]*?src=['"]([^<>]*?youtu[^<>]*?)['"]
2. Универсальный способ получить основную картинку для статьи или товара
Заключается в том, что многие современные сайты используют метатег og:image для задания картинки, которая будет показана, если ссылку на страницу добавят в соцсеть. Полностью метатег выглядит так:
<meta property="og:image" content="http://site.com/images/image.jpg"/>
Чтобы убедится, что картинка есть, проверьте исходный код страницы. Проще всего это сделать в вашем браузере, комбинацией Ctrl+U или просмотрев в селекторе.
Чтобы получить картинку используем:
<meta[^<>]*?og:image['"][^<>]*?content=['"]([^<>]*?)['"]
Получаем 1 группу. В результате получим http://site.com/images/image.jpg
3. Получаем url товара для следующего занесения в наш интеренет-магазин
При парсинге товаров часто нужно и собрать url именно товара без сайта и категорий. Например
http://site.com/shop/category/product-01
Нам нужно получить "product-01". Для этого устанавливаем в Датакол "Тип поля" - "Спец поле". И далее во вкладке "Спец значения" - "URL" (оно уже будет выбрано по умолчанию).
И добавляем одну замену:
.*?/ - > пусто
Если в урл есть завершающий слеш "/" тогда делаем 2 замены:
/$ -> пусто .*?/ - > пусто
4. Удаляем стили, классы в HTML тегах
Эта регулярка может помочь Вам при сохранении описания, где зачастую нужно сохранить теги, но вот часто в них присутствуют не нужные нам стили или классы. Чтобы их убрать используем следующие примеры:
<([a-z\d]{1,6})\ [^<>]*?> -> <$1>
Это универсальный метод, но будьте оторожны почистит все что внутри. Если нужно чистить какойто конкретный тег, тогда так:
<div[^<>]*?> -> <div>
Отличный материал, спасибо за статью
Здравствуйте. А как мне вытащить из ссылки числовое значение атрибута mod_id в таблицу Exel если ссылка
Мне нужно вот это значение: 136262220
Как-то так mod_id=([\d]+)
С НАСТУПАЮЩИМ ВСЕХ!
Для экспорта картинок в БД необходим формат имени вида id_имяКартинки, где id это инкремент новой записи в БД. В Datacol предусмотрена возможность генерировать имена картинок, но оперировать можно только со значениями полей парсинга. А надо получить результат mysql запроса к своей БД. Может это можно реализовать плагином?
А зачем Вам это? При импорте в БД инкремент сам увеличивается на +1. Вы просто не указываете его при импорте, он сам должен увеличиваться.
Я себе представляю себе это так: результаты парсинга перед отправкой обрабатываются плагином (или динамическим плагином), который запрашивает max(id), прибавляет +1, переименовывает изображения и выгружает результат на сайт, т.е. загружает файлы по FTP и вносит записи в БД. Скрипт записи в БД я написал, а вот в C# несилён, хотя знаю, что с mySQL он работает.
Вам лучше напрямую обратиться к разработчикам или знающим C#. Моих познания тут наврядли хватит )
Логика CMS устроена таким образом, что при добавлении в БД нового объявления, картинки добавляются в другую таблицу с префиксом ххх_имякартинки, где ххх это ID самого объявления, к которой картинки и относятся. Т.е. при экспорте картинки напрямую на сайт я уже должен знать max(id), чтобы дать изображению правильное имя (дописать ххх_)
А как преобразовывать ссылку при сборе ссылки, чтобы в конце добавляло неоходимое окончание
sayt.com/category/tovar-0016
на
sayt.com/category/tovar-0016/haracter
Cпасибо
В вашем случае думаю лучше использовать замены при загрузке. Т.е вы по регулярке находите вашу ссылку или ее часть и делаете замену.
Спасибо за ответ, но я так ничего и не понял.
Где это и как сделать?
Логику понимаю, что $ и на /haracter, но как это вбить в преобработку базовой ссылки?