2013-04-28 60 views
0

找到一個特定的字符串是相對容易的,但我不知道從哪一個開始。我需要提取一個字符串,每次都會有所不同,但具有相似的特徵。PHP或Javascript - 找到一個特定的字符串

下面是我需要在段落中找到的一些示例字符串,無論是在開始,結束還是在中間的某個位置。

7b.9t.7iv.4x

4ir.4i.5i.6t

7ix.7t.4t.0z

正如你所看到的字符串將始終以數字開頭,並且最多可以有2個字符,並且總是包含4個用點分隔的八位字節。

讓我知道你是否需要更多的細節。

編輯:

多虧了下面的答案我想出了這一點,雖然不漂亮,做什麼,我需要的。

$body="test 1f.9t.7iv.4x test 1a.9a.7ab.4xa test "; 

$var=preg_match_all("([0-9][a-z]{1,2}\.[0-9][a-z]{1,2}\.[0-9][a-z]{1,2}\.[0-9][a-z]{1,2})",$body,$matches); 

$count=count($matches[0]); 
$stack = array(); 
while($count > 0){ 
    $count--; 
    array_push($stack, "<span id='ip_".$matches[0][$count]."'>".$matches[0][$count]."</span>"); 
} 
$stack=array_reverse($stack); 
$body=str_replace($matches[0],$stack,$body); 
+0

我真的不知道從哪裏開始,因爲這是我在這裏的第一個問題,我似乎已經牢牢把握了php和javascript的概念,並且希望在正確的區域有一些小的方向。 – Jesse 2013-04-28 02:56:06

+0

關鍵字:正則表達式 – CBroe 2013-04-28 02:57:45

回答

4

您可以使用正則表達式。

就像這樣讓你開始。有可能是一個更好的辦法來匹配因爲它是重複的,但....

([0-9][a-z]{1,2}\.[0-9][a-z]{1,2}\.[0-9][a-z]{1,2}\.[0-9][a-z]{1,2})

(開始到9

[a-z]匹配任何字符捕獲組

[0-9]匹配任何字符0 [az]

{1,2}但只匹配以前的1或2次

\.匹配字面.\需要爲轉義因爲.是一個特殊字符

)結束捕獲組

兩個PHP和JavaScript允許正則表達式使用。

對於一個更好的視覺表現,你可以看看這個工具:http://www.debuggex.com/

如果您需要自行每個字節(如匹配),你可以添加更多的括號()每個[0-9][a-z]{1,2}然後將存儲單獨的八位字節左右。

另請注意,\d[0-9]相同,但我更喜歡後者,因爲我覺得它更具可讀性。

+0

感謝您讓我開始並且也解釋了代碼。這正是我需要的,一個開始。 – Jesse 2013-04-28 03:12:41

相關問題