在某个特征点切割从DB驱动的文本的一部分?

时间:2014-04-19 11:37:49

标签: php

好的,我有从DB驱动的这些(部分)文章。这个查询抓住了一个新闻驱动的小部分作为网页访问者的戏弄,没有别的东西。

此问题的问题是单词分解(在某些情况下或许多情况下)。例子:

//$DBdata = 'In this case, customers have been asking to develop something.';    
//$DBdata = 'During certain expertize experts were those who were expertized lol.';    

$rsql = "SELECT *, SUBSTRING(a.article, 1, 10) AS article..
$rsql['article'] = 'In this ca';
$rsql['article'] = 'During cer';

我从DB那里得到了这个,当然:"在这个ca" "在cer" 期间。

但我希望回应 - "在此" "在" 中。

那么如何通过PHP解决这个问题呢?要回溯到第一个空的空间并回复它,无论字符中的xy字长?

THX。

3 个答案:

答案 0 :(得分:0)

正如您在上一段中所述,一种解决方案是识别字符串结果中的最后一个空格字符。这可以通过strrpos()轻松完成。

$pos = strrpos($rsql['article'],' ');

if ($pos !== false) {
    $cleanStr = substr($rsql['article'],0,$pos);
} else {
    // String contains no white space - decide what to do then here...
}

答案 1 :(得分:0)

使用SUBSTRING()LOCATE()可以使用纯MySQL轻松完成。使用locate查找空格(具有已定义的偏移量,以便找到第一个,例如25)并使用SUBSTRING中返回的值。

答案 2 :(得分:0)

试试这个兄弟。

SELECT *,LEFT(SUBSTR(a.article,1,10), (LENGTH(SUBSTR(a.article,1,10)) - LOCATE(' ', REVERSE(SUBSTR(a.article,1,10)))+1)) FROM table your_conditions

这给你一个sql Query的结果,你不需要在PHP端放置条件。