PHP修剪字符串为140个字符,删除一些字符并添加一个URL

时间:2011-07-14 12:21:41

标签: php

真的在寻找一堆东西。

基本上我要创建的是以下字符串,它只能包含MAX 140个字符(请参阅我要使用的内容):

"Some text here from an XML feed... #tweeted http://bit.ly/123456" 

所以我已经有一个$text variable,其中包含XML Feed中的文本,此文本字符串将始终包含字符串#tweeted,并且可以是任意长度。

让我们说这个例子有200个字符,包括标签。

我知道需要为...<space>http://bit.ly/123456(共24个字符)腾出空间

  1. 删除#hashtag E.g:$removehash = str_replace("#tweeted", " ", $text);

  2. 获取长度E.g. $length = strlen($text);

  3. 如果超过140个字符,则将其修剪为116。

  4. 如果116以下的字符无效,因为有空间...和链接

  5. 添加...和网址($ url)。

  6. 任何建议,如果您之前已经完成此操作,或者有关如何修剪字符串的任何想法,请删除标签并将字符串添加到字符串的末尾,以便将其限制为最多140个字符,非常感谢。

    不确定如何修剪文字?

2 个答案:

答案 0 :(得分:2)

PHP的substr函数返回一个字符串的一部分,因此你可以通过

获取字符串的前116个字符。
$s = substr( $s, 0, 116 );

听起来你正在使用140字符串+ #tweeted + URL并希望生成不超过140个字符的输出字符串?我会尝试类似的东西:

$s = "Some text here from an XML feed that is 140 chars or less #tweeted http://bit.ly/123456";
$b = explode( "#tweeted", $s );

$txt = trim( $b[0] );
$url = trim( $b[1] );

$txt = substr( $txt, 0, 139 - strlen( $url ) );

$output = $txt . " " . $url;

显然我使用了太多的临时变量,但希望能让它更清晰。如果需要还需要验证输入字符串,否则第一次爆炸将不会返回预期结果。 sub中的139是140 char输出 - 结果字符串中空格的1个char。

substr line考虑到有点URL可能有不同的长度,并且不会盲目地切断116个字符。

答案 1 :(得分:1)

删除主题标签:

// For php 5.3 +
$removeHash = function($var){
    return (substr($var, 0, 1) != '#');
};

/*
For php 5.2 use the following
function removeHash($var){
    return (substr($var, 0, 1) != '#');
}
$removeHash = 'removeHash';
*/

$textlst = explode(" ", $text);
$removedHashText = implode(" ", array_filter($textlst, $removeHash));

修剪超过140:

if (count($text) > 140){
    $url = getUrl(); // what ever this might be
    $text = substr($text, 0, 116);
    $text .= "... $url";
}