php中smarty模板中如何使用preg_match_all和preg_replace函数

php中smarty模板中如何使用preg_match_all和preg_replace函数,第1张

Smarty2和Smarty3在实现上差不多,但是在smarty2升级到smarty3的时候还是要注意些许不同。

下面是已知的和smarty2不兼容的地方 == 语法 ==Smarty 3 API有些方面进行了更新。一些Smarty 2 API调用需要更新以便符合Smarty 3。你可能会得到提示,推荐你使用新的语法。可以查看Smarty 3附带的 README 文件获得更多信息。

{$array|@mod} 语法总是让人迷惑,加上@符号说明修饰符作用于数组而不是作用于数组的每个元素。通常你总是想让这个修饰符作用于这个变量而不必考虑它的类型。在 Smarty 3中,{$array|mod} 和 {$smary|@mod}

是等同的。去掉@符号,修饰符仍然作用于数组。如果你想修饰符作用于数据元素,你必须在模板中循环数组,或者使用自定义修饰符以支持数组遍历。

大多smrty函数已经在需要的地方例如{html_options}进行了转义。 == PHP版本 ==Smarty 3 仅支持PHP 5 在PHP 4将不能正常工作。 == {php} 标记 ==

Smarty 3 默认关闭 {php} 标记支持,不推荐使用。你可以通过设置$smarty->allow_php_tag=true来启用。{php} 块中的变量不再与同一页中的其它{php}块共享作用域,因此在使用的时候要注意。 == 定界符和空格 ==

Smarty 定界符 {} 有空格包围是不再认为是Smarty标记。因此,{ foo } 将被Smarty忽略,但是 {foo} 将被识别。这个变化使得 Javascript/CSS更容易在smarty中使用,而没有必要使用 {literal}

这个特性可以通过设置 $smarty->auto_literal = false; 禁用。 == 未用引号的字符串 ==

Smarty 2 对于参数中未用引号括起来的字符串有点宽容(并且模棱两可)。Smarty 3 比较严格。对于不包含特殊字符(A-Za-z0-9_之外的字符)的字符串仍然可以不用引号括起来。比如下面例子中文件名就必须用引号括起来。[xhtml]view plaincopy{assign var=foo value=baz} <-- works ok {include file="path/footpl"} <-- needs quotes! == 扩展Smarty类 ==

Smarty 3 遵循PHP5标准构造规则。扩展Smarty类的时候,使用 __construct() 作为类的构造函数的名称。如果你实现自己的构造函数,一定要先调用 parent::__construct() [php]view plaincopyclass MySmarty extends Smarty { function __construct() { parent::__construct(); // your initialization code goes here } } == 自动加载器 ==

Smarty 用spl_autoload_register函数 实现了它自己的自动加载器。如果想在自己的应用中使用自动加载器,就必须使用此方法注册。

使用 __autoload() 将失败。 这是PHP5标准自动加载函数。可以查看

>function img($comtent){  

  

    $data['content']=$content;//获取的内容  

    $soContent=$data['content'];  

    $soImages = '~<img [^>] />~';  

    preg_match_all( $soImages, $soContent, $thePics );  

    $allPics = count($thePics[0]);  

    preg_match('/<img+src=\"(+\(jpg|gif|bmp|bnp|PNG))\"+>/i',$thePics[0][0],$match);  

    $data['ig']=$thePics[0][0];  

    //dump($data['img']);  

    if( $allPics> 0 ){  

    return "$match[1];  

    }  

    else {  

    return null;  

    }  

      

  

  

}

//是定界符,表示这个中间的内容是正则。也可以换成@@##随便

/i是忽略大小写,就mp3MP3都可以匹配

那个例子是匹配<></>标签,并去除标签的内容()

不知道你那个$matches是什么,如果是匹配到的数组的话,那就是<></>标签中间的内容,也就是()里面的东西

可能存在多个<span>a</span><span>b</span>

$matches[0]=a

$matches[1]=b

以上就是关于php中smarty模板中如何使用preg_match_all和preg_replace函数全部的内容,包括:php中smarty模板中如何使用preg_match_all和preg_replace函数、php ,我想截取保存在数据库的文章中的第一张图片当文章的封面 ,就是从<img > 到</img>,应该怎么截取呢、PHP函数preg_match_all问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9477232.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存