2016-06-21 71 views
-1

我想從url下載源代碼並找出具體文本並將其存儲到變量中。如何下載url的源代碼並查找特定文本

假設我有網址http://www.homedepot.com/p/Ryobi-185-MPH-510-CFM-Gas-Backpack-Blower-RY08420A/203312654

我想下載它的源代碼,並找出下面的文字是源代碼的底部。 還存儲每個變量像CI_Pagetype,CI_ItemID在PHP變量,所以我可以將其存儲在csv文件中。

<script> 
    var CI_Pagetype = 'PRODUCT'; 
    var CI_ItemID = '203312654'; 
    var CI_ItemName = '185 MPH 510 CFM Gas Backpack Blower'; 
    var CI_CatID = '556375'; 
    var CI_CatName = ''; 
    var CI_ItemPrice = $('#ciItemPrice').val(); 
    var CI_ItemMfr = 'Ryobi'; 
    var CI_ItemMfrNum = '573539'; 
    var CI_ItemUPC = '046396001122'; 
    var CI_ItemAvailability = $('#ciItemAvailability').val(); 
    var CI_ItemISBN = ''; 
    var CI_ItemShipWeight = '22'; 

目前我可以下載使用的file_get_contents 源代碼();

但我不知道如何寫正則表達式或提取數據。

請幫我找出解決辦法。

回答

2

通過這個網站:https://regex101.com/

有了這個表達式:var (CI_)([A-Za-z0-9]*) = '([a-zA-z0-9 ]*)';

g(全局)參數

使用它對於此示例:

<script> 
var CI_Pagetype = 'PRODUCT'; 
var CI_ItemID = '203312654'; 
var CI_ItemName = '185 MPH 510 CFM Gas Backpack Blower'; 
var CI_CatID = '556375'; 
var CI_CatName = ''; 
var CI_ItemPrice = $('#ciItemPrice').val(); 
var CI_ItemMfr = 'Ryobi'; 
var CI_ItemMfrNum = '573539'; 
var CI_ItemUPC = '046396001122'; 
var CI_ItemAvailability = $('#ciItemAvailability').val(); 
var CI_ItemISBN = ''; 
var CI_ItemShipWeight = '22'; 

var bcData = new Object(); 

結果:

MATCH 1 
1. [19-22] `CI_` 
2. [22-30] `Pagetype` 
3. [34-41] `PRODUCT` 
MATCH 2 
1. [52-55] `CI_` 
2. [55-61] `ItemID` 
3. [65-74] `203312654` 
MATCH 3 
1. [85-88] `CI_` 
2. [88-96] `ItemName` 
3. [100-135] `185 MPH 510 CFM Gas Backpack Blower` 
MATCH 4 
1. [146-149] `CI_` 
2. [149-154] `CatID` 
3. [158-164] `556375` 
MATCH 5 
1. [175-178] `CI_` 
2. [178-185] `CatName` 
3. [189-189] `` 
MATCH 6 
1. [248-251] `CI_` 
2. [251-258] `ItemMfr` 
3. [262-267] `Ryobi` 
MATCH 7 
1. [278-281] `CI_` 
2. [281-291] `ItemMfrNum` 
3. [295-301] `573539` 
MATCH 8 
1. [312-315] `CI_` 
2. [315-322] `ItemUPC` 
3. [326-338] `046396001122` 
MATCH 9 
1. [411-414] `CI_` 
2. [414-422] `ItemISBN` 
3. [426-426] `` 
MATCH 10 
1. [437-440] `CI_` 
2. [440-454] `ItemShipWeight` 
3. [458-460] `22` 

價格和可用性是功能,所以沒有價值。

$re = "/var (CI_)([A-Za-z0-9]*) = '([a-zA-z0-9 ]*)';/"; 
$str = "<script>\nvar CI_Pagetype = 'PRODUCT';\nvar CI_ItemID = '203312654';\nvar CI_ItemName = '185 MPH 510 CFM Gas Backpack Blower';\nvar CI_CatID = '556375';\nvar CI_CatName = '';\nvar CI_ItemPrice = \$('#ciItemPrice').val();\nvar CI_ItemMfr = 'Ryobi';\nvar CI_ItemMfrNum = '573539';\nvar CI_ItemUPC = '046396001122';\nvar CI_ItemAvailability = \$('#ciItemAvailability').val();\nvar CI_ItemISBN = '';\nvar CI_ItemShipWeight = '22';\n\nvar bcData = new Object();"; 

preg_match_all($re, $str, $matches); 
+0

我該如何把這個在PHP腳本。可以請你解釋一下php的工作示例 – Steve

+0

隨着網站本身,有一個代碼生成器,但我爲你做,並編輯我的答案。 – Killan

+0

非常感謝。它的作品像一個魅力 – Steve