Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Axelenz

Users
  
  • Posts

    736
  • Joined

  • Last visited

Everything posted by Axelenz

  1. Подскажите, на ocStore 3.0.2.0 при выполнении inst.php вылезают кракозябры Модуль SimplePars успешно установлен/обновлен! Где искать проблемы с кодировкой ? есть один файл _key в базе в кодировке cp1251
  2. Для этого и существуют эти настройки: Делаете в проекте проверку по Производителю, т.е. указываете в этом месте границу Производитель и условия, по которым товар загружать/не загружать. Но поможет в том случае, если донор педантично заполняет поле производитель ) Ну и нужно помнить, что Адидас и Adidas для модуля не одно и то же...
  3. Я не знаю, как с помощью <{skip}> можно привести текст к такому виду, как мне нужно, с выборочным сохранением форматирования текста: Вот так даже можно записать: {reg[#\<(.+)\>\h*\</\1\>#u]}| {reg[#\<(.+)\>\</\1\>#]}| {reg[#\h{2,}#u]}| {reg[#^\s+|\s+$#mu]}|
  4. Всем желающим почистить текст от "паразитных" пустых тегов с пробельными символами или без них, предлагаю использовать регулярные выражения типа: {reg[#(\<.+\>\h*?\</.+\>)*?#u]}| {reg[#^\s+|\s+$#m]}| Текст до и после обработки см. на картинке, там всё понятно...
  5. Так удалить можно, но... а что делать с такой конструкцией, где есть полезный текст: <p><em>Текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст</em></p> Её тоже удалить ?
  6. Столкнулся с ситуацией, когда не получается простым способом удалить конструкцию, например, вот такого плана: <p><em> </em></p> Использовать регулярные выражения не вижу смысла, а штатными не получается, предвидя вопрос, сразу отвечаю: и копировал с текста, и вставлял сам пробел и в нотепад смотрел что там... но не удаляется это так просто. Единственный способ, которым снёс, не прибегая к помощи регулярных выражений: <p><em>{.}</em></p>| но этот способ меня не устраивает... мало ли что туда может случайно попасть при ошибке заполнения: цифра или буква... Предлагаю расширить основные операторы в поиск замене на: {_} - Один любой пробельный горизонтальный символ. И туда запихнуть абсолютно все возможные горизонтальные пробельные символы, включая юникодовские... {_*} - группа любых пробельных горизонтальных символов. И чтобы удаляло всю группу последовательных пробельных горизонтальных символов в любой последовательности, пока не встретит НЕ пробельный символ.
  7. {reg[#(\d+)\D+?(\d+)\D+?(\d+)#u]}|$2 Берём по порядку $1, $2, $3 Ну и перевод на человеческий язык: Первая группа из цифр $1 (одна или больше), за которыми следуют НЕ цифры 1-на или больше (нежадный), за которыми следует вторая группа из цифр $2 (одна или больше), за которыми следуют НЕ цифры 1-на или больше (нежадный), за которыми следует третья группа из цифр $3 (одна или больше). Возвратить группу $2 {reg[#[^\d]#]}| или так {reg[#\D#]}| или так {reg[#[^0-9]#]}| Забыл написать, следующую регулярку можно поставить вот эту на тот случай, если у Вас в тексте могут встречаться лишние, например, пробельные символы. Она удалит всё, что НЕ является ЦИФРАМИ. В принципе, возможно написать и одной строкой: {reg[#^\D*?(\d+)\D+?(\d+)\D+?(\d+)\D*?$#u]}|$2 {reg[#^[^\d]*?(\d+)[^\d]+?(\d+)[^\d]+?(\d+)[^\d]*?$#u]}|$2 {reg[#^\D*?([^\D]+)\D+?([^\D]+)\D+?([^\D]+)\D*?$#u]}|$2 {reg[#^[^0-9]*?([0-9]+)[^0-9]+?([0-9]+)[^0-9]+?([0-9]+)[^0-9]*?$#u]}|$2 результат будет тот же...
  8. Добрый день. Имею на локалке ocStore 2.3.0.2.3 Пробую установить новый АОП v.9.3 Настройки Open Server 5.2.2 следующие: не получается поставить... Причём, версия 9.2 работает без проблем... Попробовал снова установить 9.1 - устанавливается и работает без проблем с for php7.1. Попробовал снова установить 9.2 - устанавливается и работает без проблем с for php7.2. Попробовал снова установить 9.3 - выдаёт ошибку. Пробовал несколько раз и брал for php7.1 и for php7.2. В архиве for php7.3 к сожалению нет... Получаю: Кто подскажет, куда копать ?
  9. Прошлый пост по удалению пробельных символов из текста В прошлом сообщении я расписывал несколько регулярных выражений для "чистки" текста от лишних пробельных символов. Но чем хороши регулярные выражения, что почти всегда можно найти, как это реализовать по-другому. Варианты регулярного выражения, которое приводит текст к виду "стих" (с сохранением перевода строки в конце строки) 1. Вариант использует \s - пробельный символ. {reg[#\h{2,}#]}| - тут пробел {reg[#^\s+|\s+$#m]}| 2. Вариант использует \S - непробельный символ. {reg[#\h{2,}#]}| - тут пробел {reg[#^[^\S]+|[^\S]+$#m]}| 3. Вариант использует $1 - захваченную группу. {reg[#\h{2,}#]}| - тут пробел {reg[#^\s+(.*?)\s+$#m]}|$1 4. Вариация из 2-го и 3-го вариантов. {reg[#\h{2,}#]}| - тут пробел {reg[#^[^\S]+(.*?)[^\S]+$#m]}|$1 ... Результат после преобразования:
  10. Может Вы про это: {reg[#<a\s.*?href="(.+?)".*?>(.+?)</a>#]}|$2 Чтобы удаляло - после черты ничего не ставим, чтобы заменить - ставим, на что заменить... Вы задаёте постоянно не конкретные вопросы, но хотите получать на них конкретные ответы. Подумайте над тем, что правильно сформулированный вопрос несёт в себе 50% ответа на него... Когда научитесь задавать правильные вопросы - половина их сразу отпадёт. Автор модуля физически не сможет параллельно с разработкой модуля проводить курсы программирования, изучения html, регулярных выражений и пр. основ сайтостроения и парсинга. Так же, как продавец автомобилей не должен заниматься обучением вождения... Что значит возвращать содержимое ? Чтобы вернуть то, что уже есть - не нужно ничего с ним делать. Чтобы удалить - после "|" оставляем пустое место, т.е. заменить на "пусто". Чтобы заменить - после "|" подставляем на что меняем...
  11. {reg[#\v{2,}#]}|{br} {reg[#\h{2,}#]}| - тут пробел {reg[#^\s+|\s+$#m]}| Человеческим языком: Первым выражением сводим все дубли вертикальных переносов к одному {br}. Вторым выражением сводим все горизонтальные пробельные символы к одному " ". Третьим - убираем в каждой строке в начале и в конце любые оставшиеся пробельные символы. Получаем полную зачистку от лишних пробельных символов... \s - любой пробел (такой же как [\t\n\r\f]) \h - горизонтальный разделитель. Табуляция, пробел и все символы в Unicode категории «разделители» \v - вертикальные разделители. новая строка и все символы «разделители строк» в Unicode Конкретно в Вашем случае, amd4 может и достаточно было бы {reg[#^\s+|\s+$#m]}| но... для того, чтобы понять это, необходимо спарсить всё в csv и проверить... Лично я всегда перестраховываюсь и вставляю формулы с разумной избыточностью... не всегда на сайтах встретишь "чистый код" ( Рекомендую всем начинающим взять себе на заметку и не задавать автору модуля одни и те же вопросы изо дня в день. То, что описано выше помогает получить, например, Описание товара, с сохранением существующих переносов строки. Как пример - стихи. Если перенос строки не важен (простой текст), то рекомендую использовать более простой вариант "метлы": {reg[#\s{2,}#]}| - тут стоит пробел. Его не видно, но он там есть! {reg[#^\s+|\s+$#]}| Первое правило превратит ВСЕ (от 2-х и больше) пробелы, табуляции, переводы строк и пр. в один пробел. Второе правило - обрежет любой пробельный символ в начале и в конце текста. Ну а дальше можно отталкиваться от того, что Вы хотите получить, какой вид текста. Если даже этих двух способов очистки Вам явно не хватает - изучайте, что такое обычная граница парсинга, что такое повторяющаяся граница парсинга... В справке есть ответы на 99% возможных вопросов, а 1% автор умышленно оставил пользователям для нашего же развития )
  12. Чтобы не рассекречивать свой супер-пупер-шмупер засекреченный проект, которого даже в интернете не найти, воспользуйтесь самым простым способом избавиться от пустот: {reg[#\s{2,}#]}| - тут стоит пробел. Его не видно, но он там есть! {reg[#^\s+|\s+$#]}| Первое правило превратит ВСЕ пробелы, табуляции, переводы строк в один пробел. Второе правило обрежет пробел в начале и в конце. Ну а дальше можно отталкиваться от того, что Вы хотите получить, какой вид текста. Есть одна простая зависимость: чем сложнее необходимо регулярное выражение, чтобы достать нужную информацию - значит тем меньше пользователь читал справку автора модуля... Как правило, всегда можно обойтись самыми простыми наборами регулярок, автор модуля уже всё продумал и решил за нас... ) Как он правильно показывал в недавних сообщениях, почти под каждую задачу можно найти не один а несколько способов решения. Чем проще решение - тем оно красивее с точки зрения логики...
  13. Парсер выполняет свою задачу - парсит всю информацию о товаре, для чего он изначально и предназначен. Поэтому обвинять его в том, что что-то там не работает в самой CMS это всё равно, что обвинять Mercedes-Benz в том, что их автомобили плохо ездят на бензине, разбавленном ослиной мочой... Ну да, нет идеальных CMS, но никто и не заставляет выбирать именно Opencart... есть прекрасная поделка Wordpress )))
  14. У меня там никак не меньше разных правил... Поэтому не хочу все яйца класть в одно лукошко ) ---------------------------------------------------------------------- Из разряда хотелок... Иногда по ходу пьесы получается, что создаются разные границы в качестве вспомогательных или для опытов... а потом забывается, что реально задействовано и необходимо, а что уже можно удалить, чтобы не захламлять проект. Так вот было бы не плохо, если бы можно было визуально отличать границы, которые реально задействованы в проекте от тех, которые не используются (при парсинге в ИМ или CSV)... Да, если их десяток, то можно и так удалить, но если их сотня ? Может с помощью выделения или наклонным или меньшим шрифтом или в тумане... не знаю как, но чтобы было понятно, что эта граница нигде не используется в проекте и может быть при желании удалена или вообще кнопка типа "очистить проект от не задействованных границ", но это уже слишком... думаю, что это избыточно и может быть даже не желательно...
  15. И спасибо Вам за такую возможность. Раньше я всё это делал в Excel, но ручной труд это скучно, поэтому я всё по самому максимуму переношу в проект один раз и навсегда. Зачем делать повторяющиеся действия, если это можно сразу задать при парсинге. А количество большое потому, что у клиента такой запрос, фильтровать Наименование на наличие запрещённых слов... и список слов. Не загружать некоторые категории и список категорий из более 600 всего категорий на сайте-доноре. Поэтому меньше ну никак не получается... Но может и можно как-то это всё сделать так, чтобы группировать можно было ? Не говорю про текстовый файл, а именно, чтобы всё запустить в один столбец, построчно ?
  16. Не факт... ) У меня в одном постоянном проекте около полусотни проверок как по цифрам, так и по не нужным категориям, запрещённым словам в наименовании, которые находятся все в одном месте, а именно в "Настройки допуска к обработке страницы" и плюс клиент может сказать, что на этот раз граница не 100, а 10 или на этот раз пару категорий пропускаем... Поэтому лично мне вариант с разбрасыванием проверок по всему проекту ну никак... Я даже наоборот, выступаю за модульность. Чтобы всё что касается какой-то конкретной операции, например, проверки или замены, было максимально сфокусировано именно в этом блоке. Дабы избежать в дальнейшем не нужных вопросов: "почему у меня не работает" и "ой, а я то совсем забыл что оно у меня там стоит..." )
  17. Запишите, как у меня. Первое - до 10, второе условие - до 100. {reg[#\d{3,}#]} если на обычный язык перевести, то это означает, что проходят проверку только данные, которые состоят из цифр в количестве от 3-х шт. Т.е. больше 100 и 100 проходит проверку, а 99 уже не проходит...
  18. (.*?) - МОЖЕТ быть любой символ (не жадный) ([A-ZА-Я]{2,} - за которым должны следовать заглавные буквы англ. или рус. от двух и больше (.*?) - за которыми МОЖЕТ следовать любой символ ( |$)) - после которого идёт или пробел или конец текста (.*)- после которого МОЖЕТ быть любой символ #u - кодировка Unicode $2 - взять только то, что находится во вторых скобках... ([A-ZА-Я]{2,}(.*?)( |$)) *любой символ - кроме переноса строки \n *может быть - а может и не быть...
  19. Пожалуйста. Лично я выбираю всегда места, откуда это "выцарапать" по явному уже указанию, что эти цифры обозначают, например, в Вашем случае это может быть: itemprop="sku" content="36469" product_id="36469" 'PRODUCT_ID':'36469'
×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.