Что нового

[RegExp] Поиск на странице имени пользователя

AlexVong

Новичок
Сообщения
112
Репутация
1
Подскажите как найти на открытой странице имя пользователя?
Код:
<SPAN style="WIDTH: 90%; DISPLAY: inline-block" id=zettLogin class=headTextBox title="ТР'К пользователь">Иванов Иван Иванович</SPAN>
И записать в переменную в таком виде - Иванов И.И. :scratch:
 

AZJIO

Меценат
Меценат
Сообщения
2,874
Репутация
1,194
Код:
$sText = '<SPAN style="WIDTH: 90%; DISPLAY: inline-block" id=zettLogin class=headTextBox title="ТР''К пользователь">Иванов Иван Иванович</SPAN>'
$sText=StringRegExpReplace($sText, '(?s)\A.*<[^<>]+id=zettLogin[^<>]+>([\wА-яЁё]+)\s+([\wА-яЁё])[\wА-яЁё]+\s+([\wА-яЁё])[\wА-яЁё]+<.+\z', '\1 \2. \3.')
MsgBox(0, 'Сообщение', $sText)
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
AlexVong,
Можно и так попробовать.
Код:
#include <IE.au3>

;$oIE = _IECreate('Ваша ссылка')
;...
$oSpan = _IEGetObjById($oIE, 'zettLogin')
$sLogin = _IEPropertyGet($oSpan, 'innertext')
ConsoleWrite($sLogin & @LF)
$aTemp = StringSplit(StringStripWS($sLogin, 7), ' ')
If $aTemp[0] > 1 Then
	$sLogin = $aTemp[1] & ' '
	For $i = 2 To $aTemp[0]
		$sLogin &= StringUpper(StringLeft($aTemp[$i], 1)) & '.'
	Next
EndIf
ConsoleWrite($sLogin & @LF)
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
AZJIO
Регулярка жесть.
AlexVong
Если не надо делить на фамилию имя и отчество, и если в фио нет символов <, то можно так.
Код:
StringRegExp($data,"\Qid=zettLogin\E[^>]+>([^<]+)",1)

Это как innerText для ID zettLogin


Добавлено:
Сообщение автоматически объединено:

Не до конца дочитал и не увидел что нужно делить точками, вот другой вариант. :whistle:
Код:
$sData = '<SPAN style="WIDTH: 90%; DISPLAY: inline-block" id=zettLogin class=headTextBox title="ТРК пользователь">Иванов Иван Иванович</SPAN>'
$aRes = StringRegExp($sData,'\Qid=zettLogin\E[^>]+>(\S+)\s*(\S)\S*\s*(\S)',1)
ConsoleWrite($aRes[0]&" "&$aRes[1]&"."&$aRes[2]&"." & @LF)
 

AZJIO

Меценат
Меценат
Сообщения
2,874
Репутация
1,194
inververs
Да, жесть, начальный этап, в качестве имён указаны русские символы и англ. алфавит, возможно здесь не прав, так как в международном варианте могут быть иные символы, а значит нужно сделать методом исключения. В упрощённом варианте пробел, но при условии, что имя введено точно по формату, потому что у вас захватывает и знаки припинания и цифры и т.д.
Кстати попробуйте удалить пробел между именами в своём варианте. У меня тоже есть проблема, но она легко решается, если делить как у вас в массив. Так как проблема при замене, если не найден шаблон, то возвращает всю строку.
 
Верх