str_用PHP替换HTML
我有一个HTML字符串,我想用$u帖子中的PHP变量动态替换它 这是我的字符串: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
$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]
- 为什么要使用
来“转义”HTMLmysql\u real\u escape\u string
$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]
- 为什么要使用
来“转义”HTMLmysql\u real\u escape\u string
$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查询?