Thread View: pl.comp.lang.vbasic
12 messages
12 total messages
Started by ChrissP.
Thu, 08 Apr 2010 09:59
vb6 - wyciągnięcie linków z html
Author: ChrissP.
Date: Thu, 08 Apr 2010 09:59
Date: Thu, 08 Apr 2010 09:59
43 lines
2041 bytes
2041 bytes
Witam
W swoim programie mam wstawioną kontrolkę, która pozwala na wizualne
edytowanie maila. Jedną z funkcjonalności jest wstawianie obrazka. Na
wyjściu dostaję zmienną string z kodem html dokumentu. Tak przygotowany
email może być wysłany jako email i tu pojawiają się schody...
Do wysyłki maila używam biblioteki SMTP Send Mail, która oczywiście
wysyła html'owe maile z jednym zastrzeżeniem - wszystkie użyte w mailu
obrazki, aby zostały zakodowane w mailu, muszą być dołączone jako
załącznik.
W jaki sposób mogę odczytać linki ze zmiennej string?
Popełniłem taki oto fragment:
For i = 0 To UBound(sHTML)
If InStr(1, sHTML(i), "<IMG src=") > 0 Then
For iAn = 0 To Len(sHTML(i))
iLastA = InStr(sHTML(i), Chr(34) & ">")
iLen = Len(sHTML(i))
iPos = iLastA - 22
sLink = Mid(sHTML(i), 22, iPos)
Next iAn
If lblAttachment.Caption = "" Then
lblAttachment.Caption = sLink
Else
lblAttachment.Caption = lblAttachment.Caption & ";" & sLink
End If
End If
Next i
.Attachment = Trim(lblAttachment.Caption)
Niestety, średnio to sobie radzi, a już zupełnie, jak są 2 linki do
grafiki w jednej linii...
--
Pozdrawiam
Krzysztof
Re: vb6 - wyciągnięcie linków z html
Author: joker77
Date: Thu, 08 Apr 2010 10:40
Date: Thu, 08 Apr 2010 10:40
2 lines
1294 bytes
1294 bytes
A nie lepiej dołączyć obrazek jako kod html? Poszukaj w dziale tworzenie obrazków przy pomocy GD w php.
Re: vb6 - wyciągnięcie linków z html
Author: ChrissP.
Date: Thu, 08 Apr 2010 10:54
Date: Thu, 08 Apr 2010 10:54
16 lines
1408 bytes
1408 bytes
joker77 wrote: > A nie lepiej dołączyć obrazek jako kod html? Poszukaj w dziale > tworzenie obrazków przy pomocy GD w php. Ale to nie ma nic wspólnego z PHP ;-) Cały email jest edytowany na desktopie, za pomocą mojego programiku. Obrazki muszą zostać zakodowane do base64 aby były ładnie "wklejone" wewnątrz majla (a nie w postaci linków). Sama biblioteka wysyłająca wymaga, aby linki (czy to do pliku na dysku, czy na ftp) do plików z grafiką, były dołączone do listy załączników... -- Pozdrawiam Krzysztof
Re: vb6 - wyciągnięcie linków z html
Author: joker77
Date: Thu, 08 Apr 2010 12:34
Date: Thu, 08 Apr 2010 12:34
6 lines
1619 bytes
1619 bytes
Chodziło mi wyłącznie o przykład jak jest to zrobione w php nic więcej. Ok dam ci przykład: <img src="data:image/png;base64,[tuwklejkod_typubase64_z_obrazkiem]"/>
Re: vb6 - wyciągnięcie linków z html
Author: ChrissP.
Date: Thu, 08 Apr 2010 13:32
Date: Thu, 08 Apr 2010 13:32
42 lines
2338 bytes
2338 bytes
joker77 wrote: > Chodziło mi wyłącznie o przykład jak jest to zrobione w php nic > więcej. > > Ok dam ci przykład: > > <img src="data:image/png;base64,[tuwklejkod_typubase64_z_obrazkiem]"/> Trochę chyba niejasno napisałem. Kontrolka zwraca mi zmienną tekstową z zawartością maila w html. W niej taki string: <HEAD><TITLE>rmpHTMLEdit</TITLE><BASE href=http://> <META http-equiv=Content-Type content="text/html; charset=utf-8"><LINK href="" type=text/css rel=stylesheet> <META content="MSHTML 6.00.6000.16850" name=GENERATOR></HEAD> <BODY> <P>Dear Mr Krzysztof Jagodzinski</P> <P><IMG src="file:///C:/Documents%20and%20Settings/krzyszp/My%20Documents/Downlo ads/w0168131_normal.jpg"><IMG src="file:///C:/Documents%20and%20Settings/krzyszp/My%20Documents/Projec ts/RTA-Multiuser/Logo.jpg"></P></BODY> Ja rozdzielam go na poszczególne linie bazując na "</P>", następnie potrzebuję wrzucić do tablicy poszczególne linki do obrazków: C:/Documents%20and%20Settings/krzyszp/My%20Documents/Downloads/w0168131_ normal.jpg w tej postaci (oczywiście dokładna ścieżka będzie się zmieniać). Kodowaniem do base64 zajmuje się już biblioteka SMTP, o której wcześniej pisałem. Potrzebuje pomocy przy wyszukaniu w zmiennej wszystkich odnośników do plików (ścieżek dostępu) - nic więcej... -- Pozdrawiam Krzysztof
Re: vb6 - wyciągnięcie linków z html
Author: ChrissP.
Date: Thu, 08 Apr 2010 13:33
Date: Thu, 08 Apr 2010 13:33
12 lines
1146 bytes
1146 bytes
ChrissP. wrote: > > Ja rozdzielam go na poszczególne linie bazując na "</P>", Pomyłka - bazując na znaku końca linii. -- Pozdrawiam Krzysztof
Re: vb6 - wyciągnięcie linków z html
Author: joker77
Date: Thu, 08 Apr 2010 16:22
Date: Thu, 08 Apr 2010 16:22
18 lines
1745 bytes
1745 bytes
dim link1 as string
dim i as integer
do
i = instr(ucase(sHTML),ucase("<img"))
if i>0 then
sHTML = right(sHTML,len(sHTML)-i)
link1 =
mid(sHTML,instr(ucase(sHTML),ucase("src=")),instr(ucase(sHTML),ucase(">")-1)
else
exit do
end if
loop
Re: vb6 - wyciągnięcie linków z html
Author: joker77
Date: Thu, 08 Apr 2010 16:24
Date: Thu, 08 Apr 2010 16:24
3 lines
1708 bytes
1708 bytes
On 8 Kwi, 18:22, joker77 <to...@phuola.com> wrote:
> i = instr(ucase(sHTML),ucase("<img"))+4 ' się mi zapomniało
Re: vb6 - wyciągnięcie linków z html
Author: Zbigniew Bratko
Date: Thu, 08 Apr 2010 16:49
Date: Thu, 08 Apr 2010 16:49
84 lines
3834 bytes
3834 bytes
Użytkownik "ChrissP." <krzyszp@-tnij-.poczta.onet.-tnij-.pl> napisał w
wiadomości news:hpklti$p80$1@news.onet.pl...
[...]
> Trochę chyba niejasno napisałem.
> Kontrolka zwraca mi zmienną tekstową z zawartością maila w html. W niej
> taki string:
>
> <HEAD><TITLE>rmpHTMLEdit</TITLE><BASE href=http://>
> <META http-equiv=Content-Type content="text/html; charset=utf-8"><LINK
> href="" type=text/css rel=stylesheet>
> <META content="MSHTML 6.00.6000.16850" name=GENERATOR></HEAD>
> <BODY>
> <P>Dear Mr Krzysztof Jagodzinski</P>
> <P><IMG
> src="file:///C:/Documents%20and%20Settings/krzyszp/My%20Documents/Downlo
> ads/w0168131_normal.jpg"><IMG
> src="file:///C:/Documents%20and%20Settings/krzyszp/My%20Documents/Projec
> ts/RTA-Multiuser/Logo.jpg"></P></BODY>
>
> Ja rozdzielam go na poszczególne linie bazując na "</P>", następnie
> potrzebuję wrzucić do tablicy poszczególne linki do obrazków:
>
> C:/Documents%20and%20Settings/krzyszp/My%20Documents/Downloads/w0168131_
> normal.jpg
[...]
Nie rozdzielaj w/m nowej linii, tylko usuń wszystkie znaki nowej linii
i rozdziel tekst w/m Tagu <img src="
jako znak końca odnośnika szukaj ciągu "> jako znak końca Tagu img.
Coś w tym rodzaju:
' sHTML jest ciągiem znaków, a nie tablicą !!!
'__________________________________________
Private Function GetLinks(sHTML As String) As String
Dim lInStrStart As Long
Dim lInStrEnd As Long
Dim sLinks As String
Dim lLenStart As Long
Dim lLenEnd As Long
Dim i As Long
' w Html-u tak dokładnie musi być zapisany Tag <img src="
' brak spacji lub więcej niż jedna spacja
' skutkować będzie błędnym odczytem
Const MY_START As String = "<img src="
'Const MY_START As String = "<img src = "
Const MY_END As String = """" & ">"
' wytnij wszystkie znaki końca linii, bo może być np. <img
' src=
' lub w innym miejscu może być znak nowej linii
sHTML = Replace(sHTML, vbNewLine, "", , , vbBinaryCompare)
lLenStart = Len(MY_START)
lLenEnd = Len(MY_END)
lInStrStart = InStr(1, sHTML, MY_START, vbTextCompare)
Do Until lInStrStart = 0
lInStrEnd = InStr(lInStrStart, sHTML, MY_END)
If lInStrEnd > 0 Then
sLinks = sLinks & Mid$(sHTML, lInStrStart + lLenStart, _
lInStrEnd - lInStrStart - lLenStart) & ";"
lInStrStart = InStr(lInStrEnd, sHTML, MY_START, vbTextCompare)
End If
DoEvents
Loop
If Len(sLinks) > 0 Then GetLinks = Left$(sLinks, Len(sLinks) - 1)
End Function
Resztę szczegółów dopracuj sobie.
Pisane w Accessie, ale stałe i funkcje są chyba zgodne.
--
Pozdrowienia
BraZby
http://www.accessfaq.pl/
Re: vb6 - wyciągnięcie linków z html
Author: Przemysław Rachwał
Date: Thu, 08 Apr 2010 18:00
Date: Thu, 08 Apr 2010 18:00
8 lines
1134 bytes
1134 bytes
W dniu 2010-04-08 11:59, ChrissP. pisze: > Niestety, średnio to sobie radzi, a już zupełnie, jak są 2 linki do > grafiki w jednej linii... użyj RegExp, albo Internet Explorer-a i DOM -- Przemek
Re: vb6 - wyciągnięcie linków z html
Author: ChrissP.
Date: Fri, 09 Apr 2010 10:15
Date: Fri, 09 Apr 2010 10:15
13 lines
1398 bytes
1398 bytes
joker77 wrote:
> On 8 Kwi, 18:22, joker77 <to...@phuola.com> wrote:
>
> > i = instr(ucase(sHTML),ucase("<img"))+4 ' się mi zapomniało
Dzięki, pomogło.
Chociaż w sumie to użyłem funkcji z postu Zbigniewa.
--
Pozdrawiam
Krzysztof
Re: vb6 - wyciągnięcie linków z html
Author: ChrissP.
Date: Fri, 09 Apr 2010 10:17
Date: Fri, 09 Apr 2010 10:17
21 lines
1508 bytes
1508 bytes
Zbigniew Bratko wrote: > > Użytkownik "ChrissP." <krzyszp@-tnij-.poczta.onet.-tnij-.pl> napisał w > wiadomości news:hpklti$p80$1@news.onet.pl... > > [...] > > Resztę szczegółów dopracuj sobie. > Pisane w Accessie, ale stałe i funkcje są chyba zgodne. Dzięki bardzo. Zastosowałem z malutką poprawką (zmieniłem stałą na Const MY_START As String = "file:///") - chyba nikt nie wstawi czegoś innego niż grafikę w tym miejscu... -- Pozdrawiam Krzysztof
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads