Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Нужна помощь. Как убрать теги в текстовом поле  [new]
Alekx
Member

Откуда:
Сообщений: 152
Всем Добрый день !!!

Помогите пожалуйта справится с такой задачей:
В таблице есть текстовое поле:
IE_DETAIL_TEXT
<p><b>Иванов</b></p><p><b>Иван </b><b>Иванович</b>Рост - 1.73 м<br></p><p><strong>


Как убрать теги чтобы значения в поле IE_DETAIL_TEXT выглядело: Иванов Иван Иванович Рост - 1.73 м

Количество тегов и текста разное.

Replace(Replace(IE_DETAIL_TEXT, "<p>", ""),"</p>","") - думаю плохой вариант.
17 фев 21, 18:00    [22282394]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь. Как убрать теги в текстовом поле  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9478
Конечный автомат.

Подозреваю, что кроме тегов, может потребоваться еще и символы > < & и прочие преобразовывать в обычные.
17 фев 21, 18:07    [22282397]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь. Как убрать теги в текстовом поле  [new]
Alekx
Member

Откуда:
Сообщений: 152
Leonid Kudryavtsev,

> < & таких символов нет
17 фев 21, 18:35    [22282417]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь. Как убрать теги в текстовом поле  [new]
Swa111
Member

Откуда:
Сообщений: 229
Alekx,

    Dim RegEx As Object: Set RegEx = CreateObject("VBScript.RegExp")
    RegEx.Global = True
    RegEx.Pattern = "</?(p|b|strong)>"
    IE_DETAIL_TEXT = RegEx.Replace(IE_DETAIL_TEXT, " ")
    RegEx.Pattern = "\s{2,}"
    IE_DETAIL_TEXT = RegEx.Replace(IE_DETAIL_TEXT, " ")
17 фев 21, 18:51    [22282431]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь. Как убрать теги в текстовом поле  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9478
Я имел в виду, что если есть теги, то вполне возможно встретить и сочетание букв "& a m p ;", "& g t ;", "& l t ;" и другие

А так конечный автомат:
+

читаем символ
если не tag и < - tag = true
если не tag и прочий символ - копируем в выходной поток
если tag и > - tag = false
если tag и прочий символ - просто игнорируем
гото в начало


Сообщение было отредактировано: 17 фев 21, 18:47
17 фев 21, 18:53    [22282432]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь. Как убрать теги в текстовом поле  [new]
court
Member

Откуда:
Сообщений: 2271
для ленивых
Function test1(html As String)
    With CreateObject("htmlfile")
        .body.innerHTML = html
        test1 = .body.outerText
    End With
End Function

только вот, перевод строки остается ...
?test1("<p><b>Иванов</b></p><p><b>Иван </b><b>Иванович</b>Рост - 1.73 м<br></p><p><strong>")
Иванов
Иван ИвановичРост - 1.73 м
17 фев 21, 19:15    [22282442]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь. Как убрать теги в текстовом поле  [new]
Alekx
Member

Откуда:
Сообщений: 152
court,

Может так побороть Replace(test1([IE_DETAIL_TEXT]);Chr(10);" ")?
17 фев 21, 19:31    [22282459]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь. Как убрать теги в текстовом поле  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 7257
И еще вариант
Private Sub Test()
    Dim strX As String, arrX() As Byte, c As Variant, ss, b
    strX = "<kf>бла<fd/>бла"
    arrX = StrConv(strX, vbFromUnicode)
     For Each c In arrX
    If c > 42 And c < 122 And c <> 62 Then c = 42
    If c = 62 Then c = 32
    ss = ss & Chr(c)
    Next
    Debug.Print ss
    b = Replace(Replace(ss, "* ", ""), "*", "")
    Debug.Print LTrim(b)
End Sub

*** бла**** бла
бла бла


Сообщение было отредактировано: 17 фев 21, 20:00
17 фев 21, 20:05    [22282479]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь. Как убрать теги в текстовом поле  [new]
DarkMan
Member

Откуда:
Сообщений: 900
court
для ленивых

И для особо ленивых , правда не VBA , a PHP
 <?php
  $string="<p><b>Иванов</b></p><p><b>Иван </b><b>Иванович</b>Рост - 1.73 м<br></p><p><strong>";
  echo strip_tags(preg_replace("/[<]/", ' <', $string));
?>
Иванов Иван Иванович Рост - 1.73 м 


Сообщение было отредактировано: 17 фев 21, 20:32
17 фев 21, 20:39    [22282492]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь. Как убрать теги в текстовом поле  [new]
DarkMan
Member

Откуда:
Сообщений: 900
court
только вот, перевод строки остается ..

Это не перевод , скорее всего абзац <p> отрабатывает.
17 фев 21, 20:42    [22282494]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь. Как убрать теги в текстовом поле  [new]
DarkMan
Member

Откуда:
Сообщений: 900
Swa111
Alekx,

    Dim RegEx As Object: Set RegEx = CreateObject("VBScript.RegExp")
    RegEx.Global = True
    RegEx.Pattern = "</?(p|b|strong)>"
    IE_DETAIL_TEXT = RegEx.Replace(IE_DETAIL_TEXT, " ")
    RegEx.Pattern = "\s{2,}"
    IE_DETAIL_TEXT = RegEx.Replace(IE_DETAIL_TEXT, " ")


Я извиняюсь , в Вашем варианте не удаляет <br> , может так попробовать ???

    RegEx.Global = True
   'RegEx.Pattern = "</?(p|b|strong)>"
    RegEx.Pattern = "<.+?>"
    IE_DETAIL_TEXT = RegEx.Replace(IE_DETAIL_TEXT, " ")
    RegEx.Pattern = "\s{2,}"
    IE_DETAIL_TEXT = RegEx.Replace(IE_DETAIL_TEXT, " ")


Сообщение было отредактировано: 17 фев 21, 23:20
17 фев 21, 23:27    [22282533]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь. Как убрать теги в текстовом поле  [new]
Alekx
Member

Откуда:
Сообщений: 152
Всем БОЛЬШОЕ СПАСИБО !!!
19 фев 21, 20:39    [22283770]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить