簡體   English   中英

正則表達式不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM