Yii2 Редактор виджетов

У меня есть базовое приложение для блога, которое использует редактор для ввода текста. Однако при загрузке изображений они сохраняются в виде 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 ($post->body contains < img > tag)
{ display < img > }

0

Решение

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) "<img src="blah.jpg" />"

Вот код https://3v4l.org/4NCNs

Вот регулярное выражение https://regex101.com/r/m1IYpx/1/

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]