Автор Гілка: Регулярка (Мосок розсипається)  (Прочитано 1151 раз)

gdekjifgb

  • Гість
Замінити всі <b> на , але не в усьому тексті, а в вв-тезі [cоdе].

(\[CODE\])(.*)(\<b\>)(.*)(\[/CODE\]) - не годиться.

$reg = '#(\[CODE\])*[.]*(\<b\>+?)[.]*(\[\/CODE\])*#i'; також не годиться

    $subst = '';
    $str = preg_replace($reg, $subst, $str);
---
$reg = '#(\[CODE\])([\s|\S]*)(\<\/b\>)([\s|\S]*)(\[\/CODE\])#im'; також не годиться.
    $subst = '$1$2$4$5';
    $str = preg_replace($reg, $subst, $str);

https://regex101.com/
---
Свої інтелектуальні витвори/потуги/спроби навів бо я шось робив, але не знаю я :( цих регекспів. Тільки щось дуже примітивне збудувати можу.

---
Я  це повідомлення жирним не виділяв(!)

Відсутній DalekiyObriy

  • Літератор
  • ******
  • дописів: 1929
  • Карма: +5/-0
Re: Регулярка (Мосок розсипається)
« Відповідей #1 : 2017-04-26 23:22:47 »
якщо в руках молоток, то все виглядає цвяхом :)

в таких випадках найкраще розбити кроки, спочатку щось на штиб preg_split() а потім вже заміна в окремих елементах preg_replace()
Fedora 35 (x86-64)

gdekjifgb

  • Гість
Re: Регулярка (Мосок розсипається)
« Відповідей #2 : 2017-04-27 13:22:41 »
у мене виходить так - це вже інша регулярка
---
      $re = '~(\[CОDЕ\]).*(<b>).*(\[/CОDЕ])~is';
      $str = 'dfg<b>fghj[CODЕ]yj<b>th<b>ujhiu<b>th[/CОDE]cgvh<b>ugjh';
      $subst = '$1    $2       $3';

      $result = preg_replace($re, $subst, $str);
---

але  воно замінює всі теги, а потрібно тільки ті що у вв-шці [соdе]


Можна і по крокам (тре спробувати), але ж можна і одним регекспом. Ну а потім буде іще складніше - регексп з масивами, ну еее щоб одним рядком коду  провести всі заміни.
---
Щось не так я зкопіпастив. Вчора зберігав результати. а сьогодні не розберусь що де. Ну то не біда.
« Змінено: 2017-04-27 13:28:54 від gdekjifgb »