Php 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

我有一个smarty变量,它输出如下数组:

$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正则表达式中的
命名捕获组