像微壹佰网,新浪微博,腾讯微博等等都需要对微博内容、字数进行处理,以下是替换内容内URL,图片,截取微博长度的方法
/* 替换掉原来的 url 地址 */
$result[‘text’] = preg_replace(“/(http:\/\/[\w\d\.\/]+)/i”, “<a href=’\\1′ target=’_blank’>\\1<a>”, $result[‘text’]);
$new = preg_replace(“/(http|https):\/\/[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)+([-A-Z0-9a-z\$\.\+\!\_\*\(\)\/\,\:;@&=\?~#%]*)*/i”, “http://0123456789.cn”, $tweet);
$striped = preg_replace(“/(http|https):\/\/[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)+([-A-Z0-9a-z\$\.\+\!\_\*\(\)\/\,\:;@&=\?~#%]*)*/i”, “”, $tweet);
/* 内容过长,进行截取 */
$repost_text = $this->tweetSubString($con, $len);
/**
* 截取微博长度
* 汉字算一个长度
* 两个英文字符算一个长度
*
*/
function tweetSubString($tweet, $length)
{
$len = 0;
$char_len = 0;
$last_pos = 0;
for($i = 0; $i < strlen($tweet); $i++)
{
$char = substr($tweet, $i, 1);
$ord = ord($char);
if ($ord < 128)
{
$char_len = ($char_len + 1) % 2;
if ($char_len > 0) {
$len++;
}
else {
$last_pos = $i;
}
}
else
{
if ($ord > 191) /* utf8 起始字符 */
{
$last_pos = $i – 1;
$len++;
}
}//
if ($len > $length) {
break;
}
}//for
//return substr($tweet, 0, max($last_pos, 0));
return substr($tweet, 0, $last_pos + 1);
}
<?php
//要替换的内容
$content = ‘dawdawdaw<p>ssss</p><img alt=”” src=”js/fckeditor/UserFiles/image/F201005201210502415831196.jpg” width=”600″ height=”366″><br><br>dawdawdawd<br><br>dawdawdaw<img alt=”” src=”js/fckeditor/UserFiles/image/33_avatar_middle.jpg” width=”120″ height=”120″>dawdawdaw’;
//提取图片路径的src的正则表达式
preg_match_all(“/<img(.*)src=\”([^\”]+)\”[^>]+>/isU”,$content,$matches);
$img = “”;
if(!empty($matches)) {
//注意,上面的正则表达式说明src的值是放在数组的第三个中
$img = $matches[2];
}else {
$img = “”;
}
if (!empty($img))
{
$img_url = “”;
$patterns= array();
$replacements = array();
foreach($img as $imgItem){
$final_imgUrl = $img_url.$imgItem;
$replacements[] = $final_imgUrl;
$img_new = “/”.preg_replace(“/\//i”,”\/”,$imgItem).”/”;
$patterns[] = $img_new;
}
//让数组按照key来排序
ksort($patterns);
ksort($replacements);
}
//替换内容
$vote_content = preg_replace($patterns, $replacements, $content);
echo $vote_content;
?>
//要替换的内容
$content = ‘dawdawdaw<p>ssss</p><img alt=”” src=”js/fckeditor/UserFiles/image/F201005201210502415831196.jpg” width=”600″ height=”366″><br><br>dawdawdawd<br><br>dawdawdaw<img alt=”” src=”js/fckeditor/UserFiles/image/33_avatar_middle.jpg” width=”120″ height=”120″>dawdawdaw’;
//提取图片路径的src的正则表达式
preg_match_all(“/<img(.*)src=\”([^\”]+)\”[^>]+>/isU”,$content,$matches);
$img = “”;
if(!empty($matches)) {
//注意,上面的正则表达式说明src的值是放在数组的第三个中
$img = $matches[2];
}else {
$img = “”;
}
if (!empty($img))
{
$img_url = “”;
$patterns= array();
$replacements = array();
foreach($img as $imgItem){
$final_imgUrl = $img_url.$imgItem;
$replacements[] = $final_imgUrl;
$img_new = “/”.preg_replace(“/\//i”,”\/”,$imgItem).”/”;
$patterns[] = $img_new;
}
//让数组按照key来排序
ksort($patterns);
ksort($replacements);
}
//替换内容
$vote_content = preg_replace($patterns, $replacements, $content);
echo $vote_content;
?>
转载请注明:苏demo的别样人生 » 截取微博长度,替换微博url