解析php字符串中的多个值

时间:2014-01-16 11:34:05

标签: javascript php regex parsing

我被困在一个地方和新手在正则表达式:

我需要在php中解析一个字符串,并从特定模式中找出多个值。

但是需要解析的字符串实际上是一个javascript代码。

这是需要解析的字符串(javascript代码):

<script src="http://192.168.1.172/jsScripts/jquery.min.js"></script>
<link rel="stylesheet" 
     type="text/css"  
     href="http://192.168.1.172/adqCss/adqExapandable.css">
<script src="http://192.168.1.172/jsScripts/adqExpandable.js"></script>
<script>
    var t1 = ${kom_demo_test1};
    var t2 = ${kom_demo_test2};
    var url = 'http://demo.com';
</script> 

现在我需要识别所有以 $ {kom_dom _ 开头的单词,然后我想将test1,test2存储在一个数组中。

感谢任何帮助。

提前致谢:)

2 个答案:

答案 0 :(得分:1)

这是一个适用于此的表达式。 Capture组1将在kom_demo_之后为您提供所有内容。

/\$\{kom_demo_([^\}]+)\}/

答案 1 :(得分:1)

您可以使用preg_match_all轻松完成此操作,如下所示:

<?php
$input= '<script src="http://192.168.1.172/jsScripts/jquery.min.js"></script>
<link rel="stylesheet" 
     type="text/css"  
     href="http://192.168.1.172/adqCss/adqExapandable.css">
<script src="http://192.168.1.172/jsScripts/adqExpandable.js"></script>
<script>
    var t1 = ${kom_demo_test1};
    var t2 = ${kom_demo_test2};
    var url = \'http://demo.com\';
</script>';

$matches= array(); // An array to store the results
$results= preg_match_all('/\${kom_demo_(.*)}/', $input, $matches);

var_dump($matches);

将产生:

array
  0 => 
    array
      0 => string '${kom_demo_test1}' (length=17)
      1 => string '${kom_demo_test2}' (length=17)
  1 => 
    array
      0 => string 'test1' (length=5)
      1 => string 'test2' (length=5)

所以$matches[1]包含您要查找的结果。