Jump to content
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

Edited by PoliteX

Share this post


Link to post
Share on other sites

Дайте ссылку на товар

Share this post


Link to post
Share on other sites

вам нужно удалить все что посе Технические характеристики: ?

Share this post


Link to post
Share on other sites
6 минут назад, prived сказал:

http://prntscr.com/kivxqs

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

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

Share this post


Link to post
Share on other sites

как вариант, для работы с руглярками 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!

Edited by 100napb

Share this post


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

 

Share this post


Link to post
Share on other sites

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

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

 

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

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

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

 

Share this post


Link to post
Share on other sites
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 и может че нить навернуть.

Share this post


Link to post
Share on other sites
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;

 

Share this post


Link to post
Share on other sites
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;

 

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

Share this post


Link to post
Share on other sites

а я делал такое через редактор кода за 5 минут 

Share this post


Link to post
Share on other sites

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

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

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

 

 

Share this post


Link to post
Share on other sites

del.

Хорошо, что хорошо заканчивается :)

Edited by 100napb

Share this post


Link to post
Share on other sites

спасибо. помучаю.

 

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

Share this post


Link to post
Share on other sites
5 минут назад, PoliteX сказал:

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

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

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

Share this post


Link to post
Share on other sites

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

 

вот рабочий селект на  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));

 

Edited by 100napb

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×

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.