Nasıl sadece iki etiket arasına, bir html sayfasındaki tüm metin olsun

4 Cevap php

Benim kötü İngilizce için üzgünüm Im

Benim sorun için yardıma ihtiyacım var. Biz google gibi HTML sayfasının sayfa kaynağını açtığınızda, biz HTML TAG bulunmuş olacaktır: (bu google benim dize bulundu)

<!doctype html><head><title>bla bla bla
<ol><li class="g w0"><h3 class=r>**bla bla bla..**</div></ol>
<ol><li class="g w0"><h3 class=r>**bla bla bla..**</div></ol>
<ol><li class="g w0"><h3 class=r>**bla bla bla..**</div></ol>
</script> <!-- end with no </html> ?? -->

and my problem is : How PHP get all string between <ol> .. </ol>, but keep HTML TAG (inlude <ol> and </ol>). So, all string before first <ol> and after last </ol>, or all string between </ol> and next <ol> will be deleted or not show. I can do this in VB but can't on PHP. Thanks

4 Cevap

Umarım sorunuzu doğru anlamak değilim, ama eğer, ozur dilerim.

Bir yan not başlayarak: Eğer VB aradığınız sonuç almak için kullandığınız yöntem PHP kullanacağınız aynı yöntem olabilir, ancak farklı bir sözdizimi gerekir sanırım.

Eğer sayfada sadece sipariş listelerine arıyorsanız Söyleniyor, ben bunu tavsiye ederim XML işleme çeşit ile. XPath kullanarak, <ol>...</ol> elemanlarının bir dizisini almak gerekir. Ben sonra bu almak ve bu kapalı dayalı sayfasını oluşturmak olacaktır. Sadece Regex kullanarak aşağıdaki html dize başına ağrılı olabilir: <ol><li><ol><li>subdata1</li></ol></li></ol>. Ne isteyeyim tüm <ol> unsurdur, ancak regex / w zekisin sürece, büyük olasılıkla ile sona erecek: <ol><li><ol><li>subdata1</li></ol> ve son özledim {[(4) }]

Her neyse, sadece bir düşünce. Ben PHP yeniden yazmaya VB uygulaması içine ilk bakmak istiyorum, ama bu mümkün değilse, ben XPATH sorguları kullanarak işleme XML w / PHP üzerinde biraz okumanızı tavsiye ederim.

Sen PHP dize fonksiyonları, php düzenli ifade işlevlerini veya XML ayrıştırma fonksiyonlarını kullanabilirsiniz.

Hızlı dize strpos gibi fonksiyonları () ile substr () kullanmak olacaktır. Ancak, SimpleXML ile benzeri preg_match () veya XML fonksiyonları normal ifadeler kullanmak daha kolaydır.

Bu benim VB kod:

Dim start_string As String
Dim end_string As String
dim g as string

On Error Resume Next
start_string = "<tr>"
end_string = "</tr>"
st = 1
Data = (URL)

s = InStr(st, Data, start_string, 1)
While s > 0
d = InStr(Len(start_string) + s, Data, end_string, 1)
g = Mid(Data, s, d - s + Len(end_string))
DoEvents

g = Trim(g)
st = d + 1
s = InStr(st, Data, start_string, 1)
Wend

Sen PHP's support of regular expressions üzerinde okumak isteyebilirsiniz.