🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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
#104580
Author: ChrissP.
Date: Thu, 08 Apr 2010 09:59
43 lines
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
#104581
Author: joker77
Date: Thu, 08 Apr 2010 10:40
2 lines
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
#104582
Author: ChrissP.
Date: Thu, 08 Apr 2010 10:54
16 lines
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
#104583
Author: joker77
Date: Thu, 08 Apr 2010 12:34
6 lines
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
#104584
Author: ChrissP.
Date: Thu, 08 Apr 2010 13:32
42 lines
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
#104585
Author: ChrissP.
Date: Thu, 08 Apr 2010 13:33
12 lines
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
#104586
Author: joker77
Date: Thu, 08 Apr 2010 16:22
18 lines
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
#104587
Author: joker77
Date: Thu, 08 Apr 2010 16:24
3 lines
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
#104589
Author: Zbigniew Bratko
Date: Thu, 08 Apr 2010 16:49
84 lines
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
#104591
Author: Przemysław Rachwał
Date: Thu, 08 Apr 2010 18:00
8 lines
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
#104588
Author: ChrissP.
Date: Fri, 09 Apr 2010 10:15
13 lines
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
#104590
Author: ChrissP.
Date: Fri, 09 Apr 2010 10:17
21 lines
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