正则表达式,获取String中的值

时间:2013-12-16 23:04:53

标签: php regex

我想在HTML内容中进行字符串替换。

<!-- REPLACE_STRING_5 -->

为了做到这一点,我需要得到字符串(ID)的数量,我只是想检查我正确有效地做了吗?

<?php
$subject = "<!-- REPLACE_STRING_21 -->";
$pattern = '/^<!-- REPLACE_STRING_[0-9\.\-]+ -->/';

if(preg_match($pattern, $subject))
{
    $pos = strpos($subject, '-->');
    //20 is the number where the number postion start
    $pos = $pos - 20;
    echo substr($subject, 20, $pos);
}
else
{
    echo 'not match';
}

1 个答案:

答案 0 :(得分:2)

如果您尝试替换 REPLACE_STRING_21中的数字,您可以使用外观来执行此操作:

(?<=<!-- REPLACE_STRING_)[-0-9.]+(?= -->)

enter image description here

工作示例:http://regex101.com/r/tK5cI1

由于您想要捕获数字,您可以使用括号()来部署捕获组,如下所示:

<!-- REPLACE_STRING_([-0-9.]+) -->

工作示例:http://regex101.com/r/tV4tI3

然后您需要像这样检索捕获组1:

$subject = "<!-- REPLACE_STRING_21 -->";    
preg_match("/<!-- REPLACE_STRING_([-0-9.]+) -->/", $subject, $matches);
print_r($matches);
if (isset($matches[1]))
    echo $matches[1];

$matches将包含一系列匹配项,在这种情况下,$matches[1]是您正在寻找的匹配项。