【问题标题】:Parse multiple values in a php string解析php字符串中的多个值
【发布时间】:2014-01-16 11:34:05
【问题描述】:

我被困在某一点上,而正则表达式的新手:

我需要在 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 存储在一个数组中。

感谢任何帮助。

提前谢谢:)

【问题讨论】:

  • 你会用 PHP 还是 Javascript 解析它?
  • 我会用 PHP 解析

标签: javascript php regex parsing


【解决方案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] 包含您要查找的结果。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-03
      • 2019-10-27
      • 2014-01-24
      • 2017-01-27
      • 1970-01-01
      • 2013-08-28
      • 2011-03-06
      相关资源
      最近更新 更多