PHP 循环使用 preg_replace 或 sprintf 将 MYSQL 数据与字符串中的标签交换为 ##tag## 格式
PHP Loop using preg_replace or sprintf to swap MYSQL data with tags inside a string in ##tag## format
假设我有一个从数据库返回的数组:
$row = array("percent" => "33%", "name" => "30 Cups", "price" => "");
我还会有一个返回的字符串,类似于:
$string = "Take ##percent## off our newly released ##name## at just ##price## for the set!"
我正在尝试找到一种循环并将 $string 更改为的方法:
Take 33% off our newly released 30 Cups at just for the set!
但是,它也应该与切换后的 $row 和 $string 一起使用。对于订阅项目,$price 和##price## 可能会更改为 $year 和 ##year##。我不介意创建一个 key/value 对来将 $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 ?>
除了如何用 $row 中的数据切换 $string 中的 ##tags## 之外,我不需要查询数据库或其他任何帮助。任何帮助将不胜感激。
编辑:在这一点上,我很高兴能得到一些关于像这样的替换格式化##tags## 的系统的想法,这样我就可以尝试在 github.
使用str_replace() and 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" => "" );
$string = "Take off ##percent## our newly released ##name## at just ##price## for the set!";
$tagline = replace_tags( $row, $string );
echo $tagline;
?>
假设我有一个从数据库返回的数组:
$row = array("percent" => "33%", "name" => "30 Cups", "price" => "");
我还会有一个返回的字符串,类似于:
$string = "Take ##percent## off our newly released ##name## at just ##price## for the set!"
我正在尝试找到一种循环并将 $string 更改为的方法:
Take 33% off our newly released 30 Cups at just for the set!
但是,它也应该与切换后的 $row 和 $string 一起使用。对于订阅项目,$price 和##price## 可能会更改为 $year 和 ##year##。我不介意创建一个 key/value 对来将 $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 ?>
除了如何用 $row 中的数据切换 $string 中的 ##tags## 之外,我不需要查询数据库或其他任何帮助。任何帮助将不胜感激。
编辑:在这一点上,我很高兴能得到一些关于像这样的替换格式化##tags## 的系统的想法,这样我就可以尝试在 github.
使用str_replace() and 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" => "" );
$string = "Take off ##percent## our newly released ##name## at just ##price## for the set!";
$tagline = replace_tags( $row, $string );
echo $tagline;
?>