我被困在一个地方和新手在正则表达式:
我需要在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存储在一个数组中。
感谢任何帮助。
提前致谢:)
答案 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]
包含您要查找的结果。