Если вы хотите ограничить вывод и каждый раз одну и ту же строку, которая должна остановить выполнение, выполните следующие действия:
<div class="row">
<div class="col-12">
<ol>
<?php foreach ($text as $key => $texts): ?>
<?php if (strpos($texts->info()['description'], 'From Account') !== false) break; ?>
<li><h6> <?php echo ucfirst($texts->info()['description']) ?></h6><<br><br>
</li>
<?php endforeach ?>
</ol>
</div>
</div>
Объяснение:
Если $texts->info()['description']
содержит текст From Account
, выполнение цикла foreach завершается до break
. Если вам нужно проверить несколько ключевых слов прочитайте это.
Альтернативным решением было бы обрезать изображение с помощью imagecrop()
перед отправкой на API. Но для этого нужно быть уверенным, что он никогда не меняет размер/положение текстов.
P.S. вы уверены, что все должны видеть эти личные данные на вашем скриншоте?
Update1
Как вы и просили. Это будет тот же код, но с использованием альтернативного синтаксиса для управляющих структур а>:
<div class="row">
<div class="col-12">
<ol>
<?php foreach ($text as $key => $texts): ?>
<?php if (strpos($texts->info()['description'], 'From Account') !== false): ?>
<?php break; ?>
<?php endif; ?>
<li><h6> <?php echo ucfirst($texts->info()['description']) ?></h6><<br><br>
</li>
<?php endforeach ?>
</ol>
</div>
</div>
Возможно, это решит вашу проблему, поскольку на той же странице есть это примечание:
Смешивание синтаксисов в одном блоке управления не поддерживается.
Обновление 2
После того, как вы обновили свой вопрос, теперь он более понятен. Вывод не содержит ни одного элемента на текстовую строку. Вместо этого он содержит несколько строк текста. Из-за этого мой первый код ничего не выводил, так как находил From Account
в самом первом элементе массива.
Из-за этого нам нужно найти строку From Account
и вырезать текстовую строку:
<div class="row">
<div class="col-12">
<ol>
<?php foreach ($text as $key => $texts): ?>
<?php
$text = $texts->info()['description'];
// search for string
$pos = strpos($texts->info()['description'], 'From Account');
if ($pos !== false) {
// if the string was found cut the text
$text = substr($text, 0, $pos);
}
?>
<li><h6> <?php echo $text ?></h6><<br><br>
</li>
<?php endforeach ?>
</ol>
</div>
</div>
При желании вы можете добавить это перед <?php endforeach ?>
, чтобы пропустить все следующие элементы массива:
<?php
if ($pos !== false) {
break;
}
?>
Примечание. @TerryLennox использует preg_match
, чтобы найти From Account
. Нет никакой разницы между этим и использованием strpos
(большинство предпочитает избегать регулярных выражений). Но его ответ содержит еще один хороший совет. Он использует информацию о позиции текста, чтобы добавить текст построчно в новый массив. Это может быть действительно полезно в зависимости от ваших целей, как отображать/хранить текст.
person
mgutt
schedule
06.09.2019