假设我有一个从数据库返回的数组,包含:
$row = array("percent" => "33%", "name" => "30 Cups", "price" => "$16");
我也将有一个返回字符串,类似于:
$string = "Take ##percent## off our newly released ##name## at just ##price## for the set!"
我正试图找到一种方法来循环并将$字符串更改为:
Take 33% off our newly released 30 Cups at just $16 for the set!
但是,它也应该与交换$row和$string一起工作。与$price和##price##一样,对于订阅项,可能会更改为$year和##year##。我不介意创建一个键/值对,将$year分配给##year##,或者通过代码让它知道##year##是$year。
这个想法是其他人可能会来创建一个字符串:
$string = "XMAS is here and we have a ##percent## off deal on ##name##, hurry while supplies are still in stock!"
因此页面中的PHP代码将永远不会被更改。它将会是这样的:
<?= $tagline ?>
我不需要查询DB或其他任何东西的帮助,除了如何切换$string中的##标签与$row中的数据。如有任何帮助,不胜感激。
编辑:在这一点上,我很高兴只是给出一些关于什么系统替换格式化的##标签##像这样将被称为,所以我可以试着在github上找到一个例子。
使用str_replace()和array_keys()
<?php
/**
* replace_tags()
*
* @param array $row
* @param string $string
* @return string
*/
function replace_tags( $row, $string ) {
if( is_array( $row ) && !empty( $row) ) {
$tags = array();
$keys = array_keys( $row );
foreach( $keys as $tag ) : $tags[] = '##' . $tag . '##'; endforeach;
$string = str_replace( $tags, $row, $string );
}
return $string;
}
$row = array( "percent" => "33%", "name" => "30 Cups", "price" => "$16" );
$string = "Take off ##percent## our newly released ##name## at just ##price## for the set!";
$tagline = replace_tags( $row, $string );
echo $tagline;
?>