2015-04-02 30 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