PDA

View Full Version : کم کردن حروف



angel_boy013
دوشنبه 06 شهریور 1385, 18:14 عصر
من میخوام یک جمله رو کوتاه کنم به دلخواه و بهش (...) باشه یعنی یک جمله 2000 کارکتر هست فقط 15 تاش چاپ بشه و بقیش رو (...) بزنه مشابه این رو توی سایت ایران پی اچ پی پیدا کردم اما برای php 5 بود و به php 4 کار نمیکرد ........

houtanal
دوشنبه 06 شهریور 1385, 20:35 عصر
http://www.php.net/manual/en/ref.strings.php

Ernesto
سه شنبه 07 شهریور 1385, 00:43 صبح
این فانکشن برای همین منظور ساخته شده , :لبخندساده
$str جمله ورودی , $cols تعداد حروفی که باید نمایش داده بشه و $cut چیزی هست که بعد از بریدن جمله باید چاپ بشه , که برای کار شما "..." باید باشه /





//------------------------------------------------------------------
//Cut long words
//------------------------------------------------------------------

function iwrap( $str, $cols, $cut )
{
$tag_open = '<';
$tag_close = '>';
$count = ! 0;
$in_tag = 0;
$str_len = strlen( $str );
$segment_width = 0;

for( $i=0; $i< $str_len; $i++ )
{
if( $str[$i] == $tag_open )
{
$in_tag++;

}
elseif( $str[$i] == $tag_close )
{
if( $in_tag > 0 )
{
$in_tag--;
}
}
else
{
if( $in_tag == 0 )
{
$segment_width++;
if( ( $segment_width > $cols ) && ( $str[$i] != " " ) )
{
$str = substr( $str,0,$i ).$cut;
$i += strlen( $cut );
$str_len = strlen( ! $str );
$segment_width = 0;
}
}
}
}

return $str;

}

angel_boy013
سه شنبه 07 شهریور 1385, 12:31 عصر
تشکر از houtanal از کمکت در دوتا سوال

Ernesto دست شما هم درد نکنه اما substr هم کوتاه تره هم مفید تر

oxygenws
سه شنبه 07 شهریور 1385, 14:10 عصر
substr تنها به دردت نمی خوره....
چون حروف فارسی دو بایتی است و substr ممکنه از وسط یک حرف فارسی بشکنه که در اون صورت یک کاراکتر عجیب غریب می بینید...
در حالت دیگه از وسط یک کلمه ممکنه بشکنه که زیاد جالب نیست!!

angel_boy013
سه شنبه 07 شهریور 1385, 17:47 عصر
دست شما درد نکنه این مشکل دقیقاً پیش آمده بود :)

angel_boy013
سه شنبه 07 شهریور 1385, 21:39 عصر
این فانکشنی که Ernesto شما دادی برای انگلیسی کار نمیکنه و این که بازم ی رو مربع چاپ میکنه

Ernesto
چهارشنبه 08 شهریور 1385, 10:12 صبح
برای انگلیسی که نباید مشکلی داشته باشه , چون مدت هاست دارم ازش استفاده می کنم , حدس می زنم در نحوه ی استفاده شما مشکلی وجود داره , ولی در مورد متن فارسی تا حالا تست اش نکردم .

oxygenws
چهارشنبه 08 شهریور 1385, 11:01 صبح
اندکی خودت فکر کن و کد بنویس!!!

Ernesto
چهارشنبه 08 شهریور 1385, 13:29 عصر
و یکی از بهترین راه ها هم خوندن راهنمای خود سایت PHP ِ ,
بخاطر این موضوع فارسی دوباره به خود سایت سر زدم , دقیقا اولین پاسخ در مبحث substr فانکشن زیر هست , با متن فارسی امتحان کردم مشکلی نداشت .





function utf8_substr($str,$start)
{
preg_match_all("/./su", $str, $ar);
if(func_num_args() >= 3) {
$end = func_get_arg(2);
return join("",array_slice($ar[0],$start,$end));
} else {
return join("",array_slice($ar[0],$start));
}
}




جمله برادر متقی هم کاملا تائید می شه . :لبخندساده:
موفق باشید .

angel_boy013
چهارشنبه 08 شهریور 1385, 18:35 عصر
دستت درد نکنه اینم یک مشکل داره هر کاری کردم نشد
وقتی فارسی رو کوتاه میکنه یک ٠ میزاهر تهش مثل این
یییییییی٠...
برای اون فانکشن قبلی هم str_replace کردم ی رو ی بهتر شد یک مشکلم من داشتم حروف لاتینم به هم چسبیده بود کله جمله که گفتم کار نمیکنه

bigcowboy
پنج شنبه 20 دی 1386, 18:31 عصر
فکر کردم شاید این مساله شهریور 1385 بی جواب موند

function utf8_substr($str,$from,$len){
# utf8 substr
# www.yeap.lv
return preg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$from.'}'.
'((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$len.'}).*#s',
'$1',$str);
}

angel_boy013
سه شنبه 25 دی 1386, 19:30 عصر
تشکر بی جواب که موند اما این با php4 کار میکنه