让我解释一下我的情况,
我正在为我的公司制作邮件模板。
该邮件模板必须完全使用HTML。
邮件模板包含我们商店中的其他产品。
模板带有带有有关产品信息的框。
让我向您展示我的模板:
mailing-template.html
<div>
##PRODUCT_NAME## <br />
Onderdeel Nr: ##PRODUCT_ID## <br />
Merk: ##PRODUCT_BRAND## <br />
Prijs: €##PRODUCT_PRICE## <br />
</div>
您可能会说,## PRODUCT_INFORMATION#是我的产品信息将到的地方。
在PHP的帮助下,我可以替换它。我从不同的数组中获取产品信息,如下所示:
数组
$products = array
(
array
(
'product_id' => 'RD55559955',
'product_name' => 'Ontsteking (DI) Cassette Zwart Origineel Saab 9-3/9-5',
'price_excl' => 22600,
'product_brand' => 'Origineel Saab',
),
array
(
'product_id' => 'RD55559955',
'product_name' => 'een ander product',
'price_excl' => 22600,
'product_brand' => 'Origineel Saab',
),
array
(
'product_id' => 'RD55559955',
'product_name' => 'nog een ander product',
'price_excl' => 22600,
'product_brand' => 'Origineel Saab',
)
);
现在,让我向您展示如何替换信息:
createTemplate.php
//get content from mailing-template
$template = file_get_contents(dirname(__FILE__).'/mailing-template.html');
$content = $template;
foreach ($products as $product){
//replace placeholders with actual product data
$content = str_ireplace('##PRODUCT_ID##', $product['product_id'], $content);
$content = str_ireplace('##PRODUCT_NAME##', $product['product_name'], $content);
$content = str_ireplace('##PRODUCT_PRICE##', round($product['price_excl']/100, 2), $content);
$content = str_ireplace('##PRODUCT_BRAND##', $product['product_brand'], $content);
//echo the template
echo $content;
}
我正在使用str_ireplace
替换信息。
我想要的东西:所以我想要的是每个阵列显示一个产品信息框。
问题:它的作用是仅显示第一个阵列中的三个产品框。
问题:有谁知道我如何显示来自所有三个阵列的三个框?
这个问题对于答案可能有多么简单很重要,
但是,我已经被困了很长时间,所以我希望这里有人可以帮助我。
感谢您抽出宝贵的时间,感谢您能获得的所有帮助!
对于这一切,我真的很陌生,包括stackoverflow,因此请尽可能纠正我。 🙂
注意:当我echo
$product['product_name']
在$content
之外时,它确实显示三个不同的名称。每当我编辑$content
时它都不起作用。
我只是似乎不明白为什么。
参考方案
第一个循环之后没有剩余的占位符。
每次迭代都需要一个新的模板。
我也不认为需要case_insensitive替换。
str_replace()
的前两个参数将接受数组,因此您可以将函数调用总数减少为一个。
测试代码:(Demo)
foreach ($products as $product) {
echo str_replace(
['##PRODUCT_ID##',
'##PRODUCT_NAME##',
'##PRODUCT_PRICE##',
'##PRODUCT_BRAND##'],
[$product['product_id'],
$product['product_name'],
round($product['price_excl']/100, 2),
$product['product_brand']],
$content
);
}
输出:
<div>
Ontsteking (DI) Cassette Zwart Origineel Saab 9-3/9-5 <br />
Onderdeel Nr: RD55559955 <br />
Merk: Origineel Saab <br />
Prijs: €226 <br />
</div><div>
een ander product <br />
Onderdeel Nr: RD55559955 <br />
Merk: Origineel Saab <br />
Prijs: €226 <br />
</div><div>
nog een ander product <br />
Onderdeel Nr: RD55559955 <br />
Merk: Origineel Saab <br />
Prijs: €226 <br />
</div>
PHP PDO组按列名称查询结果 - php以下PDO查询返回以下结果:$db = new PDO('....'); $sth = $db->prepare('SELECT ...'); 结果如下: name curso ABC stack CDE stack FGH stack IJK stack LMN overflow OPQ overflow RS…
PHP:对数组排序 - php请如何排序以下数组Array ( 'ben' => 1.0, 'ken' => 2.0, 'sam' => 1.5 ) 至Array ( 'ken' => 2.0, 'sam' => 1.5, 'ben' =&…
在单击时显示特定行的SQL数据 - php我目前有2张桌子,顶部和底部。最上面的是我从SQL数据库调出的数据行。至于底部,数据来自与顶部表相同的数据库,但显示不同的字段。这些字段都在我的SQL数据库的同一行中。基本上,单击顶部表中的任何行,底部表将显示更多信息,这些信息也在SQL数据库的同一行内。我不确定如何显示特定行的数据,现在,当我单击顶部表中的任何行时,它将显示SQL中的所有行。表格代码:&l…
在Javascript或PHP中查找并替换<a>标签 - php我正在尝试获取执行JavaScript而不是href属性的链接。我已经在网上搜寻,可以使用几种不同的方法来接近,但没有雪茄。转换示例如下所示:<a href="http://example.com">Link 1</a> <a href="http://www.yahoo.com" tar…
CodeIgniter更新查询被执行两次 - php我正在使用CodeIgniter 2.2。每次访问页面时,我都必须用+1更新数据库。代码可以工作,但是每次都会增加+2。示例:如果是total views=2,则在单击页面后total views应该是3,但是数据库中的值是4。我确定我在控制器中仅调用一次模型add_one_to_view_image。控制者 function view(){ $view_i…