View Full Version : سوال: جستجو در متن html
mtn677
دوشنبه 17 تیر 1392, 10:44 صبح
سلام من یک صفحه html دارم که فقط متن زیر داخلش هست:
106844
حالا من می خوام با بروزر ویژوال بیسیک این صفحه رو لود کنم و مقدار بین دو * در خط اول رو با یک مقدار در تکس باکسی که در برنامه هست چک کنم اگر مقدار برابر نبود مقدار بین دو * در خط دوم چک بشه و باز اگه مقدار برابر نبود مقدار بین دو * در خط سوم چک بشه و همینطور تا آخر.
vbhamed
دوشنبه 17 تیر 1392, 11:47 صبح
سلام
Dim s$
s = "*salam*123456|mtn67" & vbCrLf & "*khoobi*123456|mtn67" & vbCrLf & "*che khabar*123456|mtn67" & vbCrLf & "*kojaey ?*123456|mtn67"
Dim a() As String, b() As String, i%
a = Split(s, vbCrLf)
For i = 0 To UBound(a)
b = Split(a(i), "*")
MsgBox "line " & i + 1 & " - " & b(1)
Next
رشته s همون محتواي html هست كه اگر فايل html تون روي وب هست يك كنترل Internet Transfer Control روي فرم بزاريد و سورس صفحه رو با روشهاي گفته شده در تاپيك زير بدست بياريد
http://barnamenevis.org/showthread.php?147062-%DA%A9%D9%86%D8%AA%D8%B1%D9%84-%D8%B5%D9%81%D8%AD%D9%87-%D9%88%D8%A8-%D8%A8%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-Internet-Control&highlight=inet.openurl
mtn677
دوشنبه 17 تیر 1392, 12:36 عصر
سلام
Dim s$
s = "*salam*123456|mtn67" & vbCrLf & "*khoobi*123456|mtn67" & vbCrLf & "*che khabar*123456|mtn67" & vbCrLf & "*kojaey ?*123456|mtn67"
Dim a() As String, b() As String, i%
a = Split(s, vbCrLf)
For i = 0 To UBound(a)
b = Split(a(i), "*")
MsgBox "line " & i + 1 & " - " & b(1)
Next
تشکر
اگه امکانش هست قسمت های مختلف این دستور رو توضیح بدید.
مثلا کار Split چیه؟کار vbCrLf چیه؟ وUBound؟
SlowCode
دوشنبه 17 تیر 1392, 13:49 عصر
split یه متن رو میگیره و اون متن رو نسبت به یه کاراکتر جدا میکنه و هر قسمت رو داخل یه آرایه میریزه.
vbcrlf یعنی کاراکتر سرخط(کاراکتری که باعث میشه متن نوشته شده از سرخط شروع بشه).
UBound تعداد عناصر آرایه رو برمیگردونه.
mtn677
دوشنبه 17 تیر 1392, 14:07 عصر
split یه متن رو میگیره و اون متن رو نسبت به یه کاراکتر جدا میکنه و هر قسمت رو داخل یه آرایه میریزه.
vbcrlf یعنی کاراکتر سرخط(کاراکتری که باعث میشه متن نوشته شده از سرخط شروع بشه).
UBound تعداد عناصر آرایه رو برمیگردونه.
تشکر
متاسفانه زیاد سر در نمیارم.
من یک صفحه html دارم به این صورت:
106857
سورس این صفحه این میشه:
106858
حالا با استفاده از دستور:
s=WebBrowser1.Document.body.innerhtml
مقدار s برابر با سورس صفحه میشه.بنابراین در مقدار s ما vbcrlf نداریم یعنی این قسمت از دستور درست اجرا نمیشه:
a = Split(s, vbCrLf)
SlowCode
دوشنبه 17 تیر 1392, 16:15 عصر
بله شما درست میگی، کدی که آقا حامد دادن واسه فایل متنی هست.
شما کافیه به جای vbcrlf بنویسی "<br>"
mtn677
دوشنبه 17 تیر 1392, 16:30 عصر
بله شما درست میگی، کدی که آقا حامد دادن واسه فایل متنی هست.
شما کافیه به جای vbcrlf بنویسی "<br>"
تشکر انجام دادم حالا یک مشکل دیگه:وقتی اجرا میکنم یک پیام میاد: line 1-salam1
و وقتی ok میکنم دیگه اتفاقی نمیوفته یعنی به خط بعدی نمیره فقط خط اول رو میخونه.
miladatashin
دوشنبه 17 تیر 1392, 18:44 عصر
هدفتون از این کار چی هست؟ اخه چه لزومی داره خط به خط چک کنید. اگه دنبال متن خاصی میگردید از instr استفاده کنید
mtn677
دوشنبه 17 تیر 1392, 18:49 عصر
هدفتون از این کار چی هست؟ اخه چه لزومی داره خط به خط چک کنید. اگه دنبال متن خاصی میگردید از instr استفاده کنید
سلام
آره دقیقا دنبال یک متن خاص هستم.
می خوام متن داخل یک تکس باکس رو با صفحه html چک کنه اگه در صفحه html بود بگه هست اگه نبود بگه نیست
miladatashin
دوشنبه 17 تیر 1392, 19:07 عصر
Dim TxtLocation As Long
TxtLocation = InStr(TxtHtml, "salam")
If (TxtLocation > 0) Then ......
mtn677
دوشنبه 17 تیر 1392, 19:21 عصر
Dim TxtLocation As Long
TxtLocation = InStr(TxtHtml, "salam")
If (TxtLocation > 0) Then ......
تشکر خیلی خوب بود ولی یک مشکل هست.
اگه در متن html من salam10 وجود داشته باشه و من با دستور شما salam رو چک کنم میگه هست در حالی که من می خوام اگه salam رو چک کردم بگه نیست ولی اگه salam10 رو چک کردم بگه هست.
miladatashin
دوشنبه 17 تیر 1392, 19:25 عصر
منضورتون اینه که قبل و بعدش space هست.
اگه منظورتون این هست
TxtLocation = InStr(TxtHtml, " salam ")
mtn677
دوشنبه 17 تیر 1392, 19:35 عصر
منضورتون اینه که قبل و بعدش space هست.
اگه منظورتون این هست
TxtLocation = InStr(TxtHtml, " salam ")
منظورم اینه که در صفحه من فرض کن دو متن وجود داشته باشه یکی"salam10" و یکی "salam7"ولی "salam" نداشته باشیم.حالا با این روش شما اگه "salam" رو چک کنم باز میگه وجود داره.البته مشکلم با این روش خوب شما حل شد مرسی.
mtn677
دوشنبه 17 تیر 1392, 21:04 عصر
یک مشکل دیگه.بین حروف کوچک و بزرگ تفاوت میذاره.یعنی اگر در متن HTML ما "SALAM" داشته باشیم و برای "salam" چک کنیم میگه وجود نداره
miladatashin
دوشنبه 17 تیر 1392, 21:13 عصر
یک مشکل دیگه.بین حروف کوچک و بزرگ تفاوت میذاره.یعنی اگر در متن HTML ما "SALAM" داشته باشیم و برای "salam" چک کنیم میگه وجود نداره
TxtLocation = InStr(LCase(TxtHtml), " salam ")
vbhamed
سه شنبه 18 تیر 1392, 10:58 صبح
سلام
كد رو برات اصلاح كردم
احتمالا vbCrLf رو در قسمت پايين جايگزين نكرده بودي
Private Sub Form_Load()
Dim s$
s = "*salam*123456|mtn67<br>*khoobi*123456|mtn67<br>*che khabar*123456|mtn67<br>*kojaey ?*123456|mtn67"
Dim a() As String, b() As String, i%
a = Split(LCase$(s), LCase$("<br>"))
For i = 0 To UBound(a)
b = Split(a(i), "*")
MsgBox "line " & i + 1 & " - " & b(1)
Next
End Sub
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.