2010-09-28 95 views
2

我想是能夠在PHP中使用正則表達式可以從以下HTML片段PHP正則表達式幫助

on Red Hot Ruby Jewelry<br>Code: Ruby9<br> 

提取 「Ruby9」的值有時「守則」將是字母數字,數字或只是字母。

任何意見將不勝感激 謝謝!

回答

0

如果模式總是相同的正則表達式會是這樣:

"<br>Code: ([a-zA-Z0-9]+)<br>" 

,將捕獲任何字母或字母數字或只是遵循
代碼數字字符串:和前
。請嘗試以下操作:

<?php 
$subject = "on Red Hot Ruby Jewelry<br>Code: Ruby9<br>"; 
$pattern = '<br>Code: ([a-zA-Z0-9]+)<br>'; 
preg_match($pattern, substr($subject,3), $matches, PREG_OFFSET_CAPTURE); 
print_r($matches); 
?> 
1

試試這個正則表達式:

$str = "on Red Hot Ruby Jewelry<br>Code: Ruby9<br>"; 

$pattern = "/Code: ([^<]+)/"; // matches anything up to first '<' 
if(preg_match($pattern, $str, $matches)) { 
    $code = $matches[1]; // matches[0] is full string, matches[1] is parenthesized match 
} else { 
    // failed to match code 
} 
+0

這適用於什麼我張貼。但是,我將如何適應不同類型的字符串?優惠券代碼:銀色 - 使用您的Gap銀卡或Gap銀卡Visa卡,您可以在整個訂單中免費送貨。在結帳時輸入此代碼即可查看您的儲蓄。 – allan 2010-09-28 03:33:08

+0

基本上需要防止你的代碼從「銀」 – allan 2010-09-28 03:34:59

+0

這個更好的「代碼:([a-zA-Z0-9] +)」後解壓任何東西和任何東西以支持這兩種情況。 – burkestar 2010-09-28 03:36:37

1
if (preg_match('/(?<=:).+(?=<)/', $subject, $regs)) { 
    // ow right! match! 
    $result = $regs[0]; 
} else { 
    // my bad... no match... 
}