【问题标题】:Yii2 Redactor widgetYii2 编辑器小部件
【发布时间】:2018-03-03 21:16:26
【问题描述】:

我有一个基本的博客应用程序,它使用编辑器作为输入文本的方式。但是,当上传图像时,它们会在“正文”字段中保存为 HTML 标记。例如:

<p>Test blog post</p><p><img src="/uploads/11/4d3ca0098c-dsc9011.jpg"></p>

是保存在“正文”字段中的内容。

这就是我检索和显示数据的方式:

 foreach($dataProvider->getModels() as $post){
    echo Html::a('<div class="well well-sm" id="inner"><h3>'.$post->subject.'</h3>', '/post/view?id=' .$post->id);
    echo 'Posted By: ' .$post->user->username . ' <br/><i class = "glyphicon glyphicon-time"></i> '.Yii::$app->formatter->asDatetime($post->updated_at)  . '<br/>Views: ' .$post->view_count .'</div>'; 
}   

有没有办法我可以在那里添加一个'if'语句来说

if ($post-&gt;body contains &lt; img &gt; tag) { display &lt; img &gt; }

【问题讨论】:

    标签: php image yii2 thumbnails redactor


    【解决方案1】:

    strstr() 搜索字符串中的字符串http://php.net/manual/en/function.strstr.php

    所以你可以试试:

    if (strstr($post->body, '<img ')) {
    

    另一种获取标签的方法可能是一些正则表达式,尽管它可能会根据 HTML 不匹配:

    <?php
    
    $html = '<html>
    <head>
    <etc />
    </head>
    <body>
    <div><img src="blah.jpg" /></div><br />
    </body>
    </html>';
    
    $regex = '#<img .*?\/>#';
    
    preg_match($regex, $html, $matches);
    
    var_dump($matches[0]);
    

    这将输出string(22) "&lt;img src="blah.jpg" /&gt;"

    这是代码https://3v4l.org/4NCNs

    这是正则表达式https://regex101.com/r/m1IYpx/1/

    【讨论】:

    • 非常感谢我所需要的。您知道如何从正文中提取图像标签吗?
    • 这可能不是最好的方法。您可以将其加载到 DOMDocument 中,然后通过标签 php.net/manual/en/domdocument.getelementsbytagname.php 获取元素。另一种方法也是尝试正则表达式匹配(不推荐)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-15
    • 1970-01-01
    • 2017-01-15
    • 1970-01-01
    相关资源
    最近更新 更多