PHP ограничивают текстовую строку НЕ включая теги HTML?

Вот то, что НЕ работает на меня:

<?php
 $string = 'I have a dog and his name is <a href="http://www.jackismydog.com">Jack</a> and I love him very much because he\'s my favorite dog in the whole wide world and nothing could make me not love him, I think.';
 $limited = substr($string, 0, 100).'...';
 echo $string;
?>

Я хочу ограничить ВИДИМЫЙ ТЕКСТ 100 символами, но использование substr() также включает невидимый текст в предел (<a href="http://www.jackismydog.com"> и </a>) который поднимает 41 из тех доступных 100 символов.

Есть ли способ ограничить текст так, чтобы слово "Jack" из ссылки было бы включено в предел, но нет <a href="http://www.jackismydog.com"> или </a>?

Править: Я хочу сохранить ссылку в строке, просто для не подсчета это - длина к пределу..

8
задан Jamie Carter 1 July 2010 в 21:21
поделиться

3 ответа

Непросто - вы, конечно, можете использовать strip_tags для удаления HTML из строки, но кроме этого простого решения нет.

3
ответ дан 5 December 2019 в 12:55
поделиться

Самый простой способ - это преобразовать это в структуру DOM. Для этого вы можете использовать DOMDocument . Затем вы можете просто просмотреть элементы и внести любые изменения в контент.

Другой подход - выполнить двухпроходный поиск и замену регулярного выражения - сначала используйте регулярное выражение для поиска содержимого тегов, а затем используйте регулярное выражение для замены содержимого сокращенным содержимым. Этого можно добиться с помощью обычных функций preg_ *.

3
ответ дан 5 December 2019 в 12:55
поделиться

Если вы хотите ограничить текстовую часть, вам нужно проанализировать ее и проверить ограничение самостоятельно. Самый простой способ:

if ( strlen(strip_tags($string)) > 100 )
{
    // the url inside $url is too big
}
else
{
    // the url inside $url fits
}
2
ответ дан 5 December 2019 в 12:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: