2013-12-16 101 views
1

我想在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'; 
} 
+0

当您完成后,您希望REPLACE_STRING_21看起来像什么? – brandonscript

+0

我需要将'21'(21是ID)取出并查找数据库,然后获取内容并替换此'<! - REPLACE_STRING_21 - >' – Bruce

回答

2

如果你想真正取代你可以使用lookarounds为此在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]是你正在寻找的。

+0

这种环视对我来说是新的感谢。有用。投票。 – Bruce

+0

感谢您的帮助r3mus,您的解决方案是更好的方法,然后我的。非常熟悉 – Bruce

+0

不客气!仍然为了历史的缘故,为榜样工作;) – brandonscript