str_用PHP替换HTML

str_用PHP替换HTML,php,string,Php,String,我有一个HTML字符串,我想用$u帖子中的PHP变量动态替换它 这是我的字符串: $message = '<html><body><font face="Arial, Helvetica" size=2><strong>Name:</strong> {$first} {$last}<br/><br/>'; 但是我的stru_替换不正常。我试过这样做: $message = '<html><b

我有一个HTML字符串,我想用$u帖子中的PHP变量动态替换它

这是我的字符串:

$message = '<html><body><font face="Arial, Helvetica" size=2><strong>Name:</strong> {$first} {$last}<br/><br/>';
但是我的stru_替换不正常。我试过这样做:

 $message = '<html><body><font face="Arial, Helvetica" size=2><strong>Name:</strong> {' . $first .'} {' . $last . '}<br/><br/>';
$message='名称:{.$first.}{.$last.}


但这也不行。我尝试过许多其他组合,但似乎都不起作用。我们将非常感谢您的帮助。谢谢。

您正在用
$message
上的str_replace覆盖每个循环中的
$text
变量

试试这个:

foreach ($_POST as $key=>$value)
{
    $message = str_replace('{$'.$key.'}', $value, $message);
}

您正在使用
$message
上的str_replace覆盖每个循环中的
$text
变量

试试这个:

foreach ($_POST as $key=>$value)
{
    $message = str_replace('{$'.$key.'}', $value, $message);
}

以下几行中有一些我不明白的事情:

$$key = mysql_real_escape_string(strip_tags(ucfirst(strtolower($_POST[$key]))));
  • 为什么使用变量<代码>$$key
  • 当您可以访问
    $value
    时,为什么要清理
    $\u POST[$key]
  • 为什么要使用
    mysql\u real\u escape\u string
    来“转义”HTML
我认为这完全没有必要

它可能不起作用的原因之一是,您正在将修改后的
$message
保存到
$text
中,而不是将其重新保存到
$message
中,以确保最终会替换所有键。另外,我认为您忘记了模式中的文字
$
,它应该是:

$text = str_replace('{$'.$key.'}', $value, $message);
______________________^
我会这样做:

$_POST = array('first'=>'foo', 'last'=>'bar');

$dbData = array(); // don't forget to initialize your array
foreach ($_POST as $key => $value) {
    $sanitizedValue = strip_tags(ucfirst(strtolower($value)));
    $message = str_replace('{$'.$key.'}', $sanitizedValue, $message);

    // save the mysql-sanitized values to an array for future use
    $dbData[$key] = mysql_real_escape_string($sanitizedValue);
}

echo $message;
// outputs 
//    <html><body><font face="Arial, Helvetica" size=2><strong>Name:</strong> Foo Bar<br/><br/>';
$\u POST=array('first'=>'foo','last'=>'bar');
$dbData=array();//不要忘记初始化数组
foreach($\发布为$key=>$value){
$sanitizedValue=带标签(ucfirst(strtolower($value));
$message=str_replace('{$'.$key'.}',$sanitizedValue,$message);
//将mysql清理后的值保存到数组中以备将来使用
$dbData[$key]=mysql\u real\u escape\u字符串($sanitizedValue);
}
回声$信息;
//输出
//名称:foobar


事实上,我已经测试过了,它可以正常工作。

从下面的一行中,我还不了解一些事情:

$$key = mysql_real_escape_string(strip_tags(ucfirst(strtolower($_POST[$key]))));
  • 为什么使用变量<代码>$$key
  • 当您可以访问
    $value
    时,为什么要清理
    $\u POST[$key]
  • 为什么要使用
    mysql\u real\u escape\u string
    来“转义”HTML
我认为这完全没有必要

它可能不起作用的原因之一是,您正在将修改后的
$message
保存到
$text
中,而不是将其重新保存到
$message
中,以确保最终会替换所有键。另外,我认为您忘记了模式中的文字
$
,它应该是:

$text = str_replace('{$'.$key.'}', $value, $message);
______________________^
我会这样做:

$_POST = array('first'=>'foo', 'last'=>'bar');

$dbData = array(); // don't forget to initialize your array
foreach ($_POST as $key => $value) {
    $sanitizedValue = strip_tags(ucfirst(strtolower($value)));
    $message = str_replace('{$'.$key.'}', $sanitizedValue, $message);

    // save the mysql-sanitized values to an array for future use
    $dbData[$key] = mysql_real_escape_string($sanitizedValue);
}

echo $message;
// outputs 
//    <html><body><font face="Arial, Helvetica" size=2><strong>Name:</strong> Foo Bar<br/><br/>';
$\u POST=array('first'=>'foo','last'=>'bar');
$dbData=array();//不要忘记初始化数组
foreach($\发布为$key=>$value){
$sanitizedValue=带标签(ucfirst(strtolower($value));
$message=str_replace('{$'.$key'.}',$sanitizedValue,$message);
//将mysql清理后的值保存到数组中以备将来使用
$dbData[$key]=mysql\u real\u escape\u字符串($sanitizedValue);
}
回声$信息;
//输出
//名称:foobar


我实际测试了它,并且它工作正常。

..(ucfirst(strtolower($\u POST[$key]))
可以变成更方便的
(ucfirst(strtolower($value))为什么要在上面运行
mysql\u real\u escape\u string
?简而言之,不要…你的帖子包含什么?尝试运行var_dump($_POST);它将进入一个数据库。我不应该逃避它吗?@shummel7845:是的,你应该,但就在它进入数据库之前。逃逸整个事件,而不仅仅是其中的一部分(否则它可能会变得混乱或出现问题,因为您在逃逸之后正在修改它)…
…(ucfirst(strtolower($\u POST[$key])))
可以变成更方便的
(ucfirst(strtolower($value))为什么要在上面运行
mysql\u real\u escape\u string
?简而言之,不要…你的帖子包含什么?尝试运行var_dump($_POST);它将进入一个数据库。我不应该逃避它吗?@shummel7845:是的,你应该,但就在它进入数据库之前。逃避整个问题,而不仅仅是其中的一部分(否则它可能会变得混乱或出现问题,因为您在逃避后正在修改它)。@shummel7845编辑了我的答案。@shummel7845编辑了我的答案。谢谢netcoder。我是新来的,所以我很感激你的帮助。如何访问循环中的这些变量,以便将它们插入数据库?这就是我执行动态变量赋值的原因,这样我就可以在代码的下面有一个静态sql查询。使用数组,请参阅我的更新(
$dbData
)。之所以应该使用数组,是因为它是专门为这类任务(甚至更多)而设计的数据结构。它还防止在代码中注入变量,因为在
foreach$\u POST
中使用
$$key
实际上有点模仿,这确实非常糟糕。谢谢NETCODER!太棒了。有没有一种动态的方法可以使用您的示例生成sql查询?谢谢netcoder。我是新来的,所以我很感激你的帮助。如何访问循环中的这些变量,以便将它们插入数据库?这就是我执行动态变量赋值的原因,这样我就可以在代码的下面有一个静态sql查询。使用数组,请参阅我的更新(
$dbData
)。之所以应该使用数组,是因为它是专门为这类任务(甚至更多)而设计的数据结构。它还防止在代码中注入变量,因为在
foreach$\u POST
中使用
$$key
实际上有点模仿,这确实非常糟糕。谢谢NETCODER!太棒了。有没有一种动态的方法可以使用您的示例生成sql查询?