Php smarty插件从文本中获取第一个图像
我有一个smarty变量,它输出如下数组:Php smarty插件从文本中获取第一个图像,php,smarty,facebook-opengraph,smarty3,smarty-plugins,Php,Smarty,Facebook Opengraph,Smarty3,Smarty Plugins,我有一个smarty变量,它输出如下数组: $article = Array(10) id => "103" categoryid => "6" title => "¿Cuánto espacio necesito para mi siti..." text => "<img class="img-responsive ce
$article = Array(10)
id => "103"
categoryid => "6"
title => "¿Cuánto espacio necesito para mi siti..."
text => "<img class="img-responsive center img..."
$texthtml = $article['text'];
preg_match('/<img.+src=[\'"](?P<src>.+)[\'"].*>/i', $texthtml, $image);
return $image['src'];
* Smarty plugin
* -------------------------------------------------------------
* File: function.articleimage.php
* Type: function
* Name: articleimage
* Purpose: get the first image from an array
* -------------------------------------------------------------
*/
function smarty_function_articleimage($params)
{
$texthtml = $article['text'];
preg_match('/<img.+src=[\'"](?P<src>.+)[\'"].*>/i', $texthtml, $image);
return $image['src'];
}
<meta property="og:image" content="{articleimage}" />
$article=Array(10)
id=>“103”
类别ID=>“6”
title=>“?我的第二天是什么时候?”
text=>“+[\'”].>/i',$texthtml,$image);
返回$image['src'];
但是我不想使用smarty中的{php}标记,因为它们已经被弃用了
因此,我只需使用以下代码构建smarty插件:
<meta property="og:image" content="image.jpg" />
*智能插件
* -------------------------------------------------------------
*文件:function.articleimage.php
*类型:功能
*名称:articleimage
*目的:从数组中获取第一个图像
* -------------------------------------------------------------
*/
函数smarty\u函数\u articleimage($params)
{
$texthtml=$article['text'];
预匹配('/.+)[\'“].*>/i',$texthtml,$image);
返回$image['src'];
}
我将其插入模板中,如下所示:
$article = Array(10)
id => "103"
categoryid => "6"
title => "¿Cuánto espacio necesito para mi siti..."
text => "<img class="img-responsive center img..."
$texthtml = $article['text'];
preg_match('/<img.+src=[\'"](?P<src>.+)[\'"].*>/i', $texthtml, $image);
return $image['src'];
* Smarty plugin
* -------------------------------------------------------------
* File: function.articleimage.php
* Type: function
* Name: articleimage
* Purpose: get the first image from an array
* -------------------------------------------------------------
*/
function smarty_function_articleimage($params)
{
$texthtml = $article['text'];
preg_match('/<img.+src=[\'"](?P<src>.+)[\'"].*>/i', $texthtml, $image);
return $image['src'];
}
<meta property="og:image" content="{articleimage}" />
但它不起作用:(
有什么线索吗?看起来您需要将
$article
传递到函数中
在报告中,它说:
从模板传递到模板函数的所有属性都作为关联数组包含在$params中
基于,传递变量的语法如下所示:
$article = Array(10)
id => "103"
categoryid => "6"
title => "¿Cuánto espacio necesito para mi siti..."
text => "<img class="img-responsive center img..."
$texthtml = $article['text'];
preg_match('/<img.+src=[\'"](?P<src>.+)[\'"].*>/i', $texthtml, $image);
return $image['src'];
* Smarty plugin
* -------------------------------------------------------------
* File: function.articleimage.php
* Type: function
* Name: articleimage
* Purpose: get the first image from an array
* -------------------------------------------------------------
*/
function smarty_function_articleimage($params)
{
$texthtml = $article['text'];
preg_match('/<img.+src=[\'"](?P<src>.+)[\'"].*>/i', $texthtml, $image);
return $image['src'];
}
<meta property="og:image" content="{articleimage}" />
然后在函数中,您应该能够从$params
中获得它,如下所示:
$article = Array(10)
id => "103"
categoryid => "6"
title => "¿Cuánto espacio necesito para mi siti..."
text => "<img class="img-responsive center img..."
$texthtml = $article['text'];
preg_match('/<img.+src=[\'"](?P<src>.+)[\'"].*>/i', $texthtml, $image);
return $image['src'];
* Smarty plugin
* -------------------------------------------------------------
* File: function.articleimage.php
* Type: function
* Name: articleimage
* Purpose: get the first image from an array
* -------------------------------------------------------------
*/
function smarty_function_articleimage($params)
{
$texthtml = $article['text'];
preg_match('/<img.+src=[\'"](?P<src>.+)[\'"].*>/i', $texthtml, $image);
return $image['src'];
}
<meta property="og:image" content="{articleimage}" />
function smarty\u function\u article图像($params)
{
$text=$params['article']['text'];
预匹配('/.+)[\'“].*>/i',$text,$image);
返回$image['src'];
}
我不太了解smarty,但是您的函数中似乎没有定义$article
。我刚刚更新了我的问题$article是一个输出数组的变量。我在问题的第一部分看到了$article
,但是在smarty\u函数\u articleimage
函数中,您设置了$texthtml=$article['text']
,就我所知,$article
尚未在该函数的范围内定义。从未听说过PHP正则表达式中的命名捕获组
)