首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP将文本限制为x字数,或第1段,以较短者为准。

PHP将文本限制为x字数,或第1段,以较短者为准。
EN

Stack Overflow用户
提问于 2017-01-05 09:27:13
回答 2查看 555关注 0票数 0

我从系统(Magento)输出了如下字符串(产品描述):

Lorem ipsum dolor坐好了,敬请光临。像皮伦特斯一样坐着,不坐着。[医]南劳瑞特白喉。库拉比图尔,孕妇在乳化液中,前长石。兼社会、自然、教育和马格尼斯的临产蒙太斯、鼻窦炎。[医]中华绒螯蟹。作者声明: Phasellus congue tortor,vel efficitur consectetur eu.泌乳素乳酸菌,前庭乳汁同坐,门脉浮肿。Ut三位一体,圣洁的明渠在塞勒日克。马萨·乌斯金红石的后果。[医]乳状前庭

然而,我只想得到第一个x字数,或者直到第一个段落(不幸的是,我们使用的系统使用双<br><br>标记创建段落)。

我使用了this答案来创建以下内容:

代码语言:javascript
复制
echo preg_replace( '/((\w+\W*){'.$numberOfWords.'}(\w+))(.*)/', '${1}', $processor->filter($description) );

然而,这不包括段落。我尝试在上面使用一个答案here,不幸的是我无法让它工作(只是返回完整的未截断字符串-可能是因为我缺乏正则表达式的能力!)这里有人能帮我吗?

EN

回答 2

Stack Overflow用户

发布于 2017-01-05 09:37:41

好的,如果你需要在(第一段)和(n段)之间最短,你必须取第一段,然后用n个词来限制它。类似于:

代码语言:javascript
复制
$first_p = preg_replace(
    '/^(.*?)<br><br>.*$/s', // Not tested, but it should be something like that
    '\\1', 
    $processor->filter($description)
);

现在,$first_p包含您的第一段。只需显示这一段的前n个单词:

代码语言:javascript
复制
echo preg_replace( '/((\w+\W*){'.$numberOfWords.'}(\w+))(.*)/', '${1}', $first_p );

希望能帮上忙。

票数 0
EN

Stack Overflow用户

发布于 2017-01-05 10:58:59

只需执行以下操作即可解决:

代码语言:javascript
复制
$descriptionStripped =   preg_replace( '/((\w+\W*){'.$numberOfWords.'}(\w+))(.*)/', '${1}', $processor->filter($description) );
$descriptionFirstPara = explode("<br><br>", $descriptionStripped);
echo $descriptionFirstPara[0];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41481309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档