我有text [mydata] some text [otherdata] some more text
之类的数据库数据,我想用动态信息(例如类别标题)替换那些[mydata]
,[otherdata]
。
所以我的数据结果如下:
text Category Title some text Category Desc some more text
代替
text [mydata] some text [otherdata] some more text
我认为preg_replace
可能会发生这种情况,但还不确定。
View::composer('*', function ($view) {
$notes = Notes::all();
foreach($notes as $note){
$descrip= $note->description;
}
$view->with('descrip', $descrip);
});
所以基本上$note->description
的内容是这些数据:
text [mydata] some text [otherdata] some more text
我想用categories
表中的数据替换那些元素。
有什么主意吗?
好吧,我正在挖掘并在下面获取代码(使用str_replace
),但是它存在一些问题,
View::composer('*', function ($view) {
//getting categories and pull out the values i want to use as `[....]`
$catC = Category::all();
foreach($catC as $catD){
$meta_title = $catD->title;
$meta_desc = $catD->meta_description;
$meta_tags = $catD->meta_tags;
}
//replace those categories values with element in database `[......]`
$seotemplates = SeoTemplate::all();
foreach($seotemplates as $seotemplate){
$myCustom = str_replace_array('[cattitle]', [$meta_title, $meta_desc, $meta_tags], $seotemplate->categories_desc_template);
}
$view->with('myCustom', $myCustom);
});
[cattitle]
,但是[catmeta] & [cattags]
呢?$meta_title
将始终返回类别表中的第一个值(例如,如果我访问HP
类别页面,它将以ACER
的形式返回[cattitle]
或其他任何类别页面一直都是ACER 我解决了第一次更新的问题1,但仍然存在问题2,这里是更新的代码
View::composer('*', function ($view) {
//categories
$catC = Category::all();
$catD = [];
foreach($catC as $catD){
$catD = [
$cattitle = $catD->title,
$catmeta = $catD->meta_tags,
$catdesc = $catD->meta_description
];
}
$a1 = array("[cattitle]","[catmeta]","[catdesc]");
$seotemplates = SeoTemplate::all();
foreach($seotemplates as $seotemplate){
$myCustom = str_replace($a1, $catD, $seotemplate->categories_desc_template);
}
$view->with('myCustom', $myCustom);
});
当前问题:
$meta_title
将始终从类别表返回第一个值(例如,如果我正在访问HP
类别页面,它将返回ACER
为[cattitle]
或我访问的任何其他类别页面。永远都是ACER
答案 0 :(得分:0)
我发现您的代码存在一些问题,我认为这将有助于您寻求所要的解决方案。
首先,就像@hktang提到的那样,他在复制变量,然后一遍又一遍地分配它的值,而不是添加它。试试这个:
$catE = [];
foreach($catC as $catD){
$catE[] = [
$cattitle = $catD->title,
$catmeta = $catD->meta_tags,
$catdesc = $catD->meta_description
];
}
其次,您还需要通过的每个循环来重置$ myCustom的值。试试这个:
$myCustom = []
foreach($seotemplates as $seotemplate){
$myCustom[] = str_replace($a1, $catE, $seotemplate->categories_desc_template);
}
这应该导致您获得替换值的seotemplates数组,但我尚未对此进行测试。