Удаление внешней ссылки по описанию товара в All-Import for Woocommerce - PullRequest
0 голосов
/ 18 февраля 2019

Мне нужно удалить внешний URL из описания продукта, это пример:

Powerbank для видеокамеры Canon NB-5L: https://www.esseshop.it/caricabatterie-universale-da-auto-rete-fotocamera-videocamera-p-4452.html

Поэтому мне нужно удалить с помощью regex каждую подстрокукоторый начинается с http и заканчивается на .html или .htm

$str = "Powerbank for videocamera Canon NB-5L: https://www.esseshop.it/caricabatterie-universale-da-auto-rete-fotocamera-videocamera-p-4452.html";

preg_replace('(http)|(.html)|(.htm)', '$1', $str, 1);

Ответы [ 2 ]

0 голосов
/ 18 февраля 2019

Ваш шаблон (http)|(.html)|(.htm) использует чередование с 3 группами захвата и в коде использует группу 1 в качестве замены.Обратите внимание, чтобы экранировать точку, чтобы она соответствовала буквально.

Если URL должен заканчиваться htm или html, вы можете использовать:

\bhttps?:\S+\.html?\b

Объяснение

  • \bhttps?: Граница слова \b, чтобы запретить использование http в качестве слова с более длинным соответствием
  • \S+ Совпадение 1+ раз, а не пробельный символ
  • \.html?\b Совпадение с точкой, за которой следует htm и необязательный l.В конце слово границы, чтобы предотвратить HTML?будучи частью более длинного слова

Regex demo | php demo

0 голосов
/ 18 февраля 2019

Вы можете использовать это регулярное выражение для сопоставления его с любым URL, начинающимся с http: или https:

https?:\S*

Демо

Демо код PHP,

$str = "Powerbank for videocamera Canon NB-5L: https://www.esseshop.it/caricabatterie-universale-da-auto-rete-fotocamera-videocamera-p-4452.html";
echo preg_replace('/https?:\S*/', '', $str, 1);

Печать,

Powerbank for videocamera Canon NB-5L:
...