php-html页面-获取URL,对其进行搜索替换,然后将结果输出到html中


php html page - take the URL, do a search replace on it, then output the result into the html

嗨,我需要一种简单的内联PHP方法来搜索/替换URL字符串,然后将结果输出到HTML

我们的结账车将人们重定向到我们的购买后页面,类似以下内容最终出现在URL栏中:

http://example.com/postpurchasepage.php?amount=$9.99&firstname=Billy&lastname=Bob

更常见的情况是,基于浏览器,他们最终会在URL栏中显示以下内容:

http://example.com?amount=%249.99&firstname=Billy&lastname=Bob

(将$转换为%24

是的,购物车在参数值内发送$符号。不,我不想要,也不想要%24。因此,挑战是移除$符号或%24(以发生的为准),

现在我正在尝试使用<?php echo @$_GET['amount']; ?> 将金额值拉入页面

例如:

<p>Hey <?php echo @$_GET['firstname']; ?> !</p>
<p>Thanks for donating <?php echo @$_GET['amount']; ?></p>

然而,输出:

<p>Hey Billy !</p>
<p>Thanks for donating %249.99</p>

我希望它输出:

<p>Hey Billy !</p>
<p>Thanks for donating 9.99</p>

(或从购物车传递的金额值,没有$符号或%24)

就像我说的,基本上我正在寻找一种方法来搜索URL栏中我定义的任何内容(多个"或"类型搜索),用我定义的内容替换,并将结果输出到html

感谢您的帮助

您可能正在寻找urldecode()

echo urldecode("%24"); // $

然后你可以剥去领先的$(如果有的话):

$string = (strpos($string)===0) ? substr($string, 1) : $string;

手动:http://php.net/manual/en/function.urlencode.php

有两种方法(或多种方法-取决于您的创造力和场景)可以完成这项工作;

  1. 如果在重定向发生之前您可以访问amount的值,您可以去掉"$"符号,只需发送数值并在那里使用。

  2. 否则,您可以在页面上获取该值,然后如wilroller所述,对其进行url解码,然后可以去掉任何非数字的前导字符。(不确定性能是否会成为问题,但这是我之前几次遇到的问题)

以下是您的代码示例:

    <p>Hey <?php echo @$_GET['firstname']; ?> !</p>
<p>Thanks for donating <?php echo @$_GET['amount']; ?></p>
<?php
$Get_Amount = urldecode($_GET['amount']);
// WHILE LOOP = TO VALIDATE IF VALUE IS NUMERIC
while (is_numeric($Get_Amount)==false) { 
    if (is_numeric(substr($Get_Amount, 0,1))){
        // DO NOTHING = First Character Numeric
        // Might be an issue if you have characters in between the number
        // THIS WILL CAUSE RE-LOOP PROBLEM (Dependent on your scenario)
    }else{
        // TRIM OFF THE FIRST CHARACTER
        $Get_Amount = substr($Get_Amount, 1);
    }
}
?>
<p>Thanks for donating <?php echo $Get_Amount; ?></p>

希望这能有所帮助!祝你好运

或------------------------

您可以像这样使用preg_replace函数:

 <p>Hey <?php echo @$_GET['firstname']; ?> !</p>
<p>Thanks for donating <?php echo @$_GET['amount']; ?></p>
<?php
$String_Get_Amount = urldecode($_GET['amount']);
// Here you can add the characters that you wanna delete
// You should not delete anything that is not numeric cause then it would even replace the decimal point
$String_Search_For_Pattern = '/[$]/';
// Replace it with nothing
$String_To_Replace = '';
$String_Get_Amount = preg_replace($String_Search_For_Pattern, $String_To_Replace, $String_Get_Amount);
?>
<p>Thanks for donating <?php echo $String_Get_Amount; ?></p>
相关文章: