Что нового

Получить значение между тегами html документа <tittle></tittle>

Dotacka

Новичок
Сообщения
37
Репутация
0
Добрый день.
Подскажите пожалуйста как получить значение между тегами html документа <tittle></tittle>
Код:
$sHtml = _INetGetSource("https://site.ru")
$sVar = значение между тегами html документа <tittle></tittle>
MsgBox(16, "Ошибка", $sVar)
 
Последнее редактирование:

liond66

Новичок
Сообщения
117
Репутация
2
Попробуйте так:
Код:
$sString = "Text1 text1<tittle>my text between tags</tittle> Text2"
$sVar = StringRegExpReplace($sString, '(?s).*\<tittle>(.*?)\</tittle>.*', '\1')
MsgBox(16, "Message", $sVar)
 

Alecsis

Осваивающий
Сообщения
123
Репутация
43
М.б. проще (да и надёжнее) нечто наподобие:
Код:
$sString = "Text1 text1<title>my text between tags</title> Text2"
$sVar = StringRegExp($sString, '(?sU)<title>(.*)</title>', 1)
If Not @error Then
    MsgBox(0, "Ok!", $sVar[0])  ; всё нормально
  Else
    MsgBox(16, "*ERROR*", 'Tag(s) not found') ;  что-то пошлО не так  :(
EndIf

и таки да, тега <tittle> вроде бы нет в природе
 
Автор
D

Dotacka

Новичок
Сообщения
37
Репутация
0
Попробуйте так:
Код:
$sString = "Text1 text1<tittle>my text between tags</tittle> Text2"
$sVar = StringRegExpReplace($sString, '(?s).*\<tittle>(.*?)\</tittle>.*', '\1')
MsgBox(16, "Message", $sVar)
Добрый день
Благодарю -
Я проверял ваш код таким образом:
Код:
$sString = _INetGetSource("https://fo.ru")
$sVar =StringRegExpReplace($sString, '(?s).*\<tittle>(.*?)\</tittle>.*', '\1')
MsgBox(16, "Message", $sVar)


Выдает полный код страницы.
Сообщение автоматически объединено:

М.б. проще (да и надёжнее) нечто наподобие:
Код:
$sString = "Text1 text1<title>my text between tags</title> Text2"
$sVar = StringRegExp($sString, '(?sU)<title>(.*)</title>', 1)
If Not @error Then
    MsgBox(0, "Ok!", $sVar[0])  ; всё нормально
  Else
    MsgBox(16, "*ERROR*", 'Tag(s) not found') ;  что-то пошлО не так  :(
EndIf

и таки да, тега <tittle> вроде бы нет в природе
Добрый день
Благодарю -
Я проверял ваш код таким образом:
Код:
$sString = _INetGetSource("https://fo.ru")
$sVar = StringRegExp($sString, '(?sU)<title>(.*)</title>', 1)
If Not @error Then
    MsgBox(0, "Ok!", $sVar[0])  ; всё нормально
  Else
    MsgBox(16, "*ERROR*", 'Tag(s) not found') ;  что-то пошлО не так  :(
EndIf


sme.jpg
 

Alecsis

Осваивающий
Сообщения
123
Репутация
43
_INetGetSource возвращает binary-содержимое страницы
чтобы поиметь текст, надо сконвертить в нормальный текст вот так
Код:
#include <Inet.au3>
#include <StringConstants.au3>
$sString = BinaryToString(_INetGetSource("https://fo.ru"), $SB_UTF8)
$sVar = StringRegExp($sString, '(?sU)<title>(.*)</title>', 1)
If Not @error Then
    MsgBox(0, "Ok!", $sVar[0])  ; всё нормально
  Else
    MsgBox(16, "*ERROR*", 'Tag(s) not found') ;  что-то пошлО не так  :(
EndIf
 

Вложения

  • title.png
    title.png
    2.6 КБ · Просмотры: 7

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,486
_INetGetSource возвращает binary-содержимое страницы
На самом деле нет (это и в справке не указано, и в самой функции видно), но поскольку страница содержится в UTF8, текст нужно конвертировать.
Как оказалось это довольно простой метод конвертации в ANSI, оказалось BinaryToString можно применять на обычные не бинарные строки.

Код:
#include <StringConstants.au3>

$sUTF8 = BinaryToString(StringToBinary('тест', $SB_UTF8))
$sANSI = BinaryToString($sUTF8, $SB_UTF8)

MsgBox(64, @ScriptName, $sUTF8)
MsgBox(64, @ScriptName, $sANSI)
 

Alecsis

Осваивающий
Сообщения
123
Репутация
43
«Тренировался на кошках» ©, т.е. на InetRead :smile:
А в оф/справке к ней английским по белому сказано про конвертацию BinaryToString'ом, ежели нужен текст…
В любом случае, важно, что разобрались в вопросе
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,486
в оф/справке к ней английским по белому сказано про конвертацию BinaryToString'ом, ежели нужен текст
Да но там есть параметр $bString, и по умолчанию он True, т.е возвращать строку.
Мне просто стало интересно что BinaryToString работает и со строками, не бинарного происхождения.
 
Автор
D

Dotacka

Новичок
Сообщения
37
Репутация
0
_INetGetSource возвращает binary-содержимое страницы
чтобы поиметь текст, надо сконвертить в нормальный текст вот так
Код:
#include <Inet.au3>
#include <StringConstants.au3>
$sString = BinaryToString(_INetGetSource("https://fo.ru"), $SB_UTF8)
$sVar = StringRegExp($sString, '(?sU)<title>(.*)</title>', 1)
If Not @error Then
    MsgBox(0, "Ok!", $sVar[0])  ; всё нормально
  Else
    MsgBox(16, "*ERROR*", 'Tag(s) not found') ;  что-то пошлО не так  :(
EndIf
Спасибо
 
Верх