2015-04-02 56 views
0

我正在使用HTML解析器。
我管理用simplehtmldom提取幾個html標籤的內容。使用php搜索html的硬編碼JavaScript變量

我試圖找出最後一個是獲得硬編碼JavaScript變量的最有效方法。

下面的代碼片段發生在每一頁我想分析:

<script type="text/javascript" language="javascript"><!-- 
    var jobPopup145169852; 
    var MONS_LOG_VARS = { //LoggingVars 
    JobID : 145169852, 
    ApplyType : 0, 
    PopUpMessage: 'Ihr Popup-Blocker verhindert die korrekte Ausführung dieser Seite.', 
    EE: 'EAAQrXuZmYIUF5avSTEZs5tdZQ--', 
    ApplyOnlineUrl: '', 
    TrackingCompany: 'Company Name', 
    TrackingLogo: '', 
    JobWinPopup : jobPopup145169852, 
    YTA : 0, 
    LogUrl :'http://stellenanzeige.monster.de/log.ashx?PositionAdID=145169852&folderid=182198220&tracking=EAAQ.8ifh6a7iJ7indez5y2mEw--&logtype=' 
    } 
//--></script> 

現在我想看看在變量「TrackingCompany」的值。
在這個例子中,Company Name

我該如何做到這一點?

+2

你可以發佈你的代碼嗎? – 2015-04-02 07:42:05

+0

沒有。 Simplehtmldom只是分析標籤,所以我認爲不可能完成它。所以實際上我正在尋找一個沒有simplehtmldom的解決方案。 – 2015-04-02 07:46:06

+0

啊,你應該先嚐試一下。 :)是每個頁面上的代碼都是一樣的嗎? – 2015-04-02 07:50:08

回答

1

您可以爲此使用RegEx。

正則表達式:/TrackingCompany: \'([a-zA-Z\s]+)\'/

解釋與此正則表達式的工作演示:https://www.regex101.com/r/vV3aE5/1

PS。此RegEx假定您的公司名稱只有字母和空格。以防萬一,如果你想包含數字,請使用:/TrackingCompany: \'([a-zA-Z0-9\s]+)\'/。如果您還有特殊字符,請將其附加到RegEx中的方括號內。


請嘗試以下工作的PHP代碼。 // comments inline

// take all of the file contents into a string $subject 
$subject = <<<EOT 
<script type="text/javascript" language="javascript"><!-- 
    var jobPopup145169852; 
    var MONS_LOG_VARS = { //LoggingVars 
    JobID : 145169852, 
    ApplyType : 0, 
    PopUpMessage: 'Ihr Popup-Blocker verhindert die korrekte Ausführung dieser Seite.', 
    EE: 'EAAQrXuZmYIUF5avSTEZs5tdZQ--', 
    ApplyOnlineUrl: '', 
    TrackingCompany: 'Company Name', 
    TrackingLogo: '', 
    JobWinPopup : jobPopup145169852, 
    YTA : 0, 
    LogUrl :'http://stellenanzeige.monster.de/log.ashx?PositionAdID=145169852&folderid=182198220&tracking=EAAQ.8ifh6a7iJ7indez5y2mEw--&logtype=' 
    } 
//--></script> 
EOT; 

// initialize the RegEx pattern 
$pattern = '/TrackingCompany: \'([a-zA-Z\s]+)\'/'; 

// execute the RegEx over the string 
preg_match($pattern, $subject, $matches, PREG_OFFSET_CAPTURE, 3); 

// check the matched contents 
echo $matches[1][0]; 

你可以嘗試和http://writecodeonline.com/php/執行該代碼來快速檢查它。


讀了起來:preg_match manual | PHP

+1

工程像魅力,謝謝;) – 2015-04-02 09:43:45

+0

@ChristianBusch RegEx的東西很容易解析。很高興幫助。 :) – 2015-04-02 09:50:50

+0

我認爲現在是時候圍繞regEx表達我的頭了。這是做到這一點的最有效和最快捷的方式嗎? – 2015-04-02 09:57:20