Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

написать регулярку


PoliteX

Recommended Posts

Добрый день, может кто подскажет как решить данную задачу:

 

в карточке товаре, в описании удалить кусок текста.

Спойлер

Стоит отметить, что при рывковых проводках эта катушка относительно недорогого диапазона работает лучше, чем более дорогие аналоги.

Технические характеристики:

  • Фрикцион: передний
  • Количество подшипников: 5+1
  • Вес: 265 гр.
  • Передаточное число: 5.1:1
  • Лесоёмкость: 0.235-150 / 0.285-100

необходимо удалить:

 

"Технические характеристики:" и все что идет за этой фразой.  в 2000 товарах.  (эти товары в определенных категориях, заранее известны)

Шаблонная фраза только "Технические характеристики:

данный текст всегда в конце описания

 

upd (добавил ссылку на товар)

https://www.fishers-house.ru/spinningi/spinningi-forsage-koreya/forsage-military/spinning-forsage-military-s-60-183m-2-7gr.html

Змінено користувачем PoliteX
Надіслати
Поділитися на інших сайтах


6 минут назад, prived сказал:

http://prntscr.com/kivxqs

главне внимательно прочитать ) 

Быстро читал))))

Надіслати
Поділитися на інших сайтах

как вариант, для работы с руглярками PHP

https://regex101.com/r/Yh6hJ8/3

 

я бы задачу решил средствами sql: запустил бы update по таблице с описанием товаров, предварительно убедившись, что вот этот селект работает корректно:

SELECT REGEXP_REPLACE(opd.description, '^Технические характеристики:[\W,\w,\d]*', '') FROM oc_product_description opd

P.S.: функция REGEXP_REPLACE появилась в MySQL 8.0+. У Вашего хостера, вполне вероятно, лишь 5.5.*

P.P.S: вполне возможно, что Ваш текст "Технические характеристики: и бла-бла-бла" на самом деле обрамлен всяким HTML. То есть в базе лежит не "голый" текст и нужна будет более сложная регулярка

P.P.P.S: делай бэкап таблицы, если не уверен на все 100!

Змінено користувачем 100napb
Надіслати
Поділитися на інших сайтах

$product_info['description'] = preg_replace('#(<strong>Технические характеристики:</strong>(.+?)</ul>)#sm','',html_entity_decode($product_info['description'], ENT_QUOTES, 'UTF-8'));

 

Надіслати
Поділитися на інших сайтах

В контроллере catalog/controller/product/product.php

Вставьте перед

 

$data['description'] = html_entity_decode($product_info['description'], ENT_QUOTES, 'UTF-8');

А эту строку замените вот так 
 

$data['description'] = $product_info['description'];

 

Надіслати
Поділитися на інших сайтах

35 минут назад, 100napb сказал:

как вариант, для работы с руглярками PHP

https://regex101.com/r/Yh6hJ8/3

 

я бы задачу решил средствами sql: запустил бы update по таблице с описанием товаров, предварительно убедившись, что вот этот селект работает корректно:


SELECT REGEXP_REPLACE(opd.description, '^Технические характеристики:[\W,\w,\d]*', '') FROM oc_product_description opd

P.S.: функция REGEXP_REPLACE появилась в MySQL 8.0+. У Вашего хостера, вполне вероятно, лишь 5.5.*

P.P.S: вполне возможно, что Ваш текст "Технические характеристики: и бла-бла-бла" на самом деле обрамлен всяким HTML. То есть в базе лежит не "голый" текст и нужна будет более сложная регулярка

P.P.P.S: делай бэкап таблицы, если не уверен на все 100!

лучше в контроллере сделать. Так как человек не силен в sql и может че нить навернуть.

Надіслати
Поділитися на інших сайтах

18 минут назад, 100napb сказал:

P.P.S: вполне возможно, что Ваш текст "Технические характеристики: и бла-бла-бла" на самом деле обрамлен всяким HTML. То есть в базе лежит не "голый" текст и нужна будет более сложная регулярка

MySQL: 5.7

так и есть

 

&lt;p style=&quot;text-align: justify;&quot;&gt;
	Уникальная новинка от &lt;strong&gt;Forsage&lt;/strong&gt; – спиннинг &lt;strong&gt;Military&lt;/strong&gt; &lt;strong&gt;S&lt;/strong&gt;, бросающийся в глаза своим брутальным дизайном. Чёрно-серый матовый бланк в сочетании с камуфляжной рукоятью, выполненной из ЭВА, – такой стиль сражает наповал.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;
	Стоит взять в руки это удилище и сразу понимаешь, что Forsage Military S – добротный универсальный боец, который уверено работает с приманками любого типа. Этот спиннинг отличается небольшим весом, быстрым строем и применяется для ловли с берега небольшого водоёма или с лодки на крупной реке или озере.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;
	Спиннинг Forsage Military S обладает прекрасным уровнем исполнения всех деталей, характерным для спиннингов самого высокого класса. Фурнитура сделана из лёгкого и прочного титанового сплава со вставками из диоксида циркония. Благодаря быстрому строю и прогрессивной расстановке колец, данный спиннинг обладает значительным запасом прочности, хорошей посылистостью и высокой сенсорикой. Добавьте сюда ВЕЛИКОЛЕПНУЮ ЦЕНУ, и Вы получите отличный инструмент для разнообразных рыбалок!&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;
	&lt;strong&gt;Характеристики:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
	&lt;li style=&quot;text-align: justify;&quot;&gt;
		Длина: 183 см.&lt;/li&gt;
	&lt;li style=&quot;text-align: justify;&quot;&gt;
		Транспортировочная длина: 95 см.&lt;/li&gt;
	&lt;li style=&quot;text-align: justify;&quot;&gt;
		Тест: 2-7 гр.&lt;/li&gt;
	&lt;li style=&quot;text-align: justify;&quot;&gt;
		Строй: Fast&lt;/li&gt;
	&lt;li style=&quot;text-align: justify;&quot;&gt;
		Тип: двучастник&lt;/li&gt;
&lt;/ul&gt;

 

Надіслати
Поділитися на інших сайтах


11 минут назад, PoliteX сказал:
MySQL: 5.7

так и есть

 


&lt;p style=&quot;text-align: justify;&quot;&gt;
	Уникальная новинка от &lt;strong&gt;Forsage&lt;/strong&gt; – спиннинг &lt;strong&gt;Military&lt;/strong&gt; &lt;strong&gt;S&lt;/strong&gt;, бросающийся в глаза своим брутальным дизайном. Чёрно-серый матовый бланк в сочетании с камуфляжной рукоятью, выполненной из ЭВА, – такой стиль сражает наповал.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;
	Стоит взять в руки это удилище и сразу понимаешь, что Forsage Military S – добротный универсальный боец, который уверено работает с приманками любого типа. Этот спиннинг отличается небольшим весом, быстрым строем и применяется для ловли с берега небольшого водоёма или с лодки на крупной реке или озере.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;
	Спиннинг Forsage Military S обладает прекрасным уровнем исполнения всех деталей, характерным для спиннингов самого высокого класса. Фурнитура сделана из лёгкого и прочного титанового сплава со вставками из диоксида циркония. Благодаря быстрому строю и прогрессивной расстановке колец, данный спиннинг обладает значительным запасом прочности, хорошей посылистостью и высокой сенсорикой. Добавьте сюда ВЕЛИКОЛЕПНУЮ ЦЕНУ, и Вы получите отличный инструмент для разнообразных рыбалок!&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;
	&lt;strong&gt;Характеристики:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
	&lt;li style=&quot;text-align: justify;&quot;&gt;
		Длина: 183 см.&lt;/li&gt;
	&lt;li style=&quot;text-align: justify;&quot;&gt;
		Транспортировочная длина: 95 см.&lt;/li&gt;
	&lt;li style=&quot;text-align: justify;&quot;&gt;
		Тест: 2-7 гр.&lt;/li&gt;
	&lt;li style=&quot;text-align: justify;&quot;&gt;
		Строй: Fast&lt;/li&gt;
	&lt;li style=&quot;text-align: justify;&quot;&gt;
		Тип: двучастник&lt;/li&gt;
&lt;/ul&gt;

 

Моя регулярка все делает. Уже проверено.

Надіслати
Поділитися на інших сайтах

та ну нафик регулярку

description = explode('Тезнические харатериситки', product['description'])

product['description'] = description[0];

 

 

Надіслати
Поділитися на інших сайтах

5 минут назад, PoliteX сказал:

но контроллер не подходит.  так как в определенных лишь категориях это надо проделать

а какая разница, тем более что в контроллере можно четко указать где и откуда

А проще всего - свой временный контроллер - сделал и забыл

Надіслати
Поділитися на інших сайтах

Блин, я думал вопрос уже решенный...

 

вот рабочий селект на  SQL, без регулярки. Просто, быстро и надежно.

  • В запросе можно указать id-шники КОНКРЕТНЫХ категорий товаров, в которых нужно что-то заменить. Для примера, у меня это 62, 63.
  • В переменную @find НУЖНО вписать ВАШУ строку, включая html тэги, начиная с которой всё последующее из описания товаров будет вырезаться.

 

Id-шники категорий элеметнарно подсмотреть в админке опернкарта - просто навести мышкой на иконку карандашика редактирования категории и посмотреть на ссылку перехода - как на рисунке

image.thumb.png.65a75db091b762e039aa88878bd10881.png

Если селект возвращает правильные результаты, переделывайте его в update и profit.

Если не уверены на 100%, выполняя апдейт по базе, то делайте бекап таблицы!!!

 

SET @find = '&lt;strong&gt;Характеристики:&lt;';

SELECT
	REPLACE(opd.description, SUBSTRING(opd.description, LOCATE(@find, opd.description)), '')
FROM 
	oc_product_description opd
WHERE 
	opd.product_id IN (SELECT product_id FROM oc_product_to_category WHERE category_id IN (62, 63));

 

специально убрал под спойлер пример апдейта

Spoiler

UPDATE oc_product_description opd SET opd.description =
  REPLACE(opd.description, SUBSTRING(opd.description, LOCATE(@find, opd.description)), '')
WHERE opd.product_id IN (SELECT
    product_id
  FROM oc_product_to_category
  WHERE category_id IN (0));

 

Змінено користувачем 100napb
Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.