[英]Regular expression syntax In PHP to extract all instances of a format
我正在嘗試從字符串中提取特定格式的所有實例:
我想知道我的新Sony [PT#123456ABC; 索尼]具有此功能,但我的朋友說新的東芝[PT#AD-3232hjk; 東芝]具有此功能。
我想提取:
[PT#123456ABC; 索尼]
[PT#AD-3232hjk; 東芝]
如您所見,處於一致位置的唯一項目是:
我試圖使用各種類型的strpos(),但是由於部件號和制造商名稱的長度和格式的不同,我無法可靠地從更大的字符串中提取那些實例。 我一直在嘗試各種使用正則表達式解決此問題的方法,但是我對它們的了解非常有限。 將這些表達式提取並放入變量后,我將需要從表達式中分離零件號和制造商名稱。 使用正則表達式也可能更容易實現。
任何幫助表示贊賞。 謝謝
$matches = array();
preg_match_all( "/\[PT#([^\];]+);([^\]]+)\]/", $input, $matches, PREG_SET_ORDER);
foreach ($matches as $match) {
echo "id=", trim($match[1]), " brand=", trim($match[2]), "\n";
}
我認為這可以做到
preg_match_all( "/(\[PT#\s+.*?;\s+.*?\])/", $input, $matches );
print_r( $matches );
或者,如果您只想捕獲唯一信息
preg_match_all( "/\[PT#\s+(.*?);\s+(.*?)\]/", $input, $matches );
我認為您將從包含許多這些條目的文本文件中讀取。 您可以做的是:
preg_match_all("/\[PT#(.*?);[.*]?(.*?)\]/i", $text, $result);
它將所有匹配項放入數組$ result中,您可以這樣訪問它們:
echo $result[1][0]; //echos first occurrence's serial
$ result按主列排序,匹配的第一個條目是完整的匹配字符串
echo $result[0][0]; // would print [PT# 123456ABC; Sony]
echo $result[1][0]; // would print 123456ABC
echo $result[2][0]; // would print Sony
希望能有所幫助
編輯:修復了正則表達式,現在應該可以使用(仍然未經測試)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.