php - 将文本分成两半,但在最近的句子处

标签 php html string

$text 变量示例:

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

将它分成两半:

$half = strlen($text) / 2;

将我带到 consequat 中的 o 字符。

如何找到文本中间最近的句子分隔符(点)的位置?在此示例中,它是 o 之后的 7 个字符。

此文本还包含 HTML 代码。
我想在找出文本的半点时忽略 HTML,并忽略 html 属性中的点等。

最佳答案

看看substr , strip_tagsstrpos .在 strpos 的帮助下,您可以找到下一个点的位置,并使用 strip_tags 从字符串中去除所有 html 标签。

$string = 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborumt.';
$string = strip_tags($string);
$half = intval(strlen($string)/2);
echo substr($string, 0, strpos($string, '.', $half)+1);

考虑到您必须确保在 $half 的值之后存在一个点,否则输出将不是您想要的。

也许是这样的?

if (strpos($string, '.', $half) !== false)
    echo substr($string, 0, strpos($string, '.', $half)+1);
else
    echo substr($string, 0, $half) . '...';

关于php - 将文本分成两半,但在最近的句子处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10491859/

相关文章:

java - 从Java中的字符串中提取第一个单词的最佳方法是什么?

php - 将表单数据保存在 url 中,无需重新加载页面

php - Laravel Passport "auth:api"中间件充当 "web, auth"中间件

php - Yii 在浏览器选项卡关闭时更新数据库字段

javascript - 当另一个面板打开时关闭 Accordion 面板

Java 用另一个子字符串(值)替换子字符串(模式)问题

python - 在Python中精确匹配字符串

php - 使用 Twig 创建导航菜单

javascript - 如何让 UI-Router 打开一个标签页

html - 三级水平菜单栏的 UL 列表显示不正确