正则表达式匹配精确字符串

时间:2016-12-07 09:33:59

标签: php regex

我有一个字符串

%24p1_x=-5&%24p1_y=-285.06492367689526&%24p1_hei=0.617986639129584&%24

并希望将p1_x值更改为动态

动态计算

15.23

需要输出为:

%24p1_x=-15.23&%24p1_y=-85.06492367689526&%24p1_hei=0.617986639129584&%24"

我尝试使用“&”爆炸和preg_match匹配字符串。 任何人都可以帮助如何实现这一目标吗?

    <?php

$a = '%24p1_x=-5&%24p1_y=-285.06492367689526&%24p1_hei=0.617986639129584&%24';

echo $a.'<br/><br/>';
$b = explode("&", $a);

foreach($b as $key => $val){
    if(preg_match('/p1_x/', $val)){
        echo 'Matched';
    }
}
?>

2 个答案:

答案 0 :(得分:1)

听起来像你只想要一个简单的preg_replace

$new_val = -15.23;
print preg_replace('/(p1_x).*?&/', '\1='.$new_val.'&', $a);

表达式/(p1_x).*?&/表示搜索从p1_x到&amp;的最小字符数。

替换中的\ 1等于搜索表达式括号中的第一部分。

答案 1 :(得分:1)

p1_x值替换为$n,直到下一个&

preg_replace('/p1_x=[^&]*/', 'p1_x=' . $n, $a)