[英]Regular Expression Not Working
大家問候
我有這個正則表達式,如下所示:
$thread_views_exp = '~<td class="alt1" align="center">.*</td> <td class="alt2" align="center">(.*)</td> </tr>~isU';
這樣做的目的是獲取此示例主題網址http://www.swalif.net/softs/swalif45的所有“視圖”(左起第一列)。 除了第一個值,一切正常。
樣本輸出:
Array
(
[0] => 12 528
[1] => 2,732
[2] => 506
[3] => 73
[4] => 83
[5] => 245
[6] => 100
[7] => 201
[8] => 55
[9] => 55
[10] => 37
[11] => 349
[12] => 123
[13] => 75
[14] => 173
[15] => 260
[16] => 101
[17] => 660
[18] => 158
[19] => 66
[20] => 177
[21] => 165
[22] => 228
[23] => 812
[24] => 347
[25] => 197
[26] => 348
[27] => 263
[28] => 176
[29] => 315
[30] => 173
[31] => 273
[32] => 199
)
謝謝你的協助。 伊姆蘭
這似乎是表格細胞貪婪的一個例子。 我的測試也給了我一個無關的<td>
。 但有一種簡單的方法可以使正則表達式更嚴格:
$rx = '~<td class="alt1" align="center">.*</td> <td class="alt2" align="center">([\d,]+)</td> </tr>~isU';
這里用\\d+
代替.*?
僅返回完全匹配。 之前的.*
吃得太多了。
一般提示:您可能希望使用[^<>]*
來安全地匹配html括號之間的文本內容,而不是.*
。 也許應用\\s+
而不僅僅是空格。
也許試試吧
~<td class="alt2" [^\<\>]+?>([\d,]+)</td>~isU
這假設你感興趣的td
總是class="alt2"
並且可能沒有必要逃避LT和GT標志,即......
~<td class="alt2" [^<>]+?>([\d,]+)</td>~isU
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.