Jump to content

php substr title


jalmz

Recommended Posts

Hi guys,

 

I would like to ask your help on how to trim the output (title). for example the title is "php freaks rocks" it should be "php freaks..."

 

Thanks..

 

<?php
$Url_Path = "";       
$data_dir = "" ;
$images_dir =$Url_Path."/images/";                       
$rel_dir = "";                              
                                                    
//Database Setting 
//You must change these values in order to run this script 
//These value are not visible in the output page source 
$host = "";        //Server Name 
$user= "";                  //Username 
$password= "";              //Password 
$database="";               //Photopost database name or forum database name 
//Display Setting (Changes to fit your page) 
$q_switch = "latest";            // "random" or "most_views" or "latest" 
$limit = 3;                        //number of image to show 
// CSS Setting (optional) 
$class_photopost = ""; 
$class_gallery = "gallery"; 
// ************************************************************************* 
// ************************************************************************* 
///////////don't edit below this line if you are too afraid to kill the code////////////// 
// ---------------------- THESE FUNCS FROM pp-inc ----------------- 
function mysql_query_eval( $query, $database ) { 
    global $Globals; 
    $mysql_eval_error=""; 
    $mysql_eval_result = mysql_query($query, $database) or $mysql_eval_error = mysql_error(); 
    if ($mysql_eval_error) { 
        if ( $Globals{'debug'} == 1 ) { 
            $letter = "An error was encountered during execution of the query:\n\n"; 
            $letter .= $query."\n\n"; 
            $letter .="The query returned with an errorcode of: \n\n$mysql_eval_error\n\n"; 
            $letter .= "If you need assistence or feel this is a 'bug'; please report it to our "; 
            $letter .= "support forums at: http://www.techimo.com/forum/f27/index.html\n\n"; 
            $letter .= "To turn off these emails, set \$debug=0 in your config-inc.php file."; 
            $email = $Globals{'adminemail'}; 
            $email_from = "From: ".$Globals{'adminemail'}; 
            $subject="Subject: ".$Globals{'webname'}." MySQL Error Report"; 
            $subject=trim($subject); 
            mail( $email, $subject, $letter, $email_from ); 
        } 
        elseif ( $Globals{'debug'} == 2 ) { 
            dieWell( "MySQL error reported!<p>Query: $query<p>Result: $mysql_eval_error<p>Database handle: $database" ); 
            exit; 
        } 
        return FALSE; 
    } 
    else { 
        return $mysql_eval_result; 
    } 
} 
function get_ext( $filename ) { 
    $photolen = strlen($filename); 
    $RetVal = substr( $filename, $photolen-3, $photolen); 
    return $RetVal; 
} 
function get_filename($filename) { 
    // strip off the last 4 
    $len = strlen( $filename )-4; 
    $RetVal = substr( $filename, 0, $len); 
    return $RetVal; 
} 
// ---------------------- THESE FUNCS FROM pp-inc ----------------- 
// Connecting, selecting database 
$link = mysql_connect ("$host", "$user", "$password") or die ('I cannot connect to the database.'); 
mysql_select_db ("$database")or die("Could not select database"); 
// Here is the hacked up display_gallery($q_switch) 
    $catquery=""; 
    if ( IsSet($cat) ) { 
        $querya="SELECT catname FROM photopost_categories WHERE id=$cat"; 
        $catq = mysql_query_eval($querya,$link); 
        $catr = mysql_fetch_array($catq); 
        $catname = $catr['catname']; 
        mysql_free_result($catq); 
        $queryb = "SELECT id FROM photopost_categories WHERE parent='$cat' ORDER BY catorder ASC"; 
        $boards = mysql_query_eval($queryb,$link); 
        $cnt=0; 
        while ( $row = mysql_fetch_array($boards, MYSQL_ASSOC)) { 
            $catqid = $row['id']; 
            if ( $cnt == 0 ) { 
                $cnt=1; 
                $catquery .= "$catqid"; 
            } 
            else { 
                $catquery .= ",$catqid"; 
            } 
        } 
        mysql_free_result($boards); 
    } 
// Connecting, selecting database 
// Selecting method and Perform SQL query 
    switch ($q_switch) { 
        case "most_views": 
            if ( !IsSet($cat) ) { 
                $group_title = "Most Popular Images - All Categories"; 
                $query = "SELECT id,user,userid,cat,title,bigimage,views FROM photopost_photos WHERE bigimage!='' AND approved='1' $exclude_cat ORDER BY views DESC LIMIT $limit"; 
            } 
            else { 
                $query = "SELECT id,user,userid,cat,title,bigimage,views FROM photopost_photos WHERE bigimage!='' AND approved='1' $exclude_cat AND cat in ($catquery) ORDER BY views DESC LIMIT $limit"; 
                $group_title = "Most Popular Images - $catname"; 
            } 
            break; 
        case "latest": 
            if ( !IsSet($cat) ) { 
                $group_title = "Most Recent Images - All Categories"; 
                $query = "SELECT id,user,userid,cat,title,bigimage,views FROM photopost_photos WHERE bigimage!='' AND approved='1' $exclude_cat ORDER BY date DESC LIMIT $limit"; 
                break; 
            } 
            else { 
                $group_title = "Most Recent Images - $catname"; 
                $query = "SELECT id,user,userid,cat,title,bigimage,views FROM photopost_photos WHERE bigimage!='' AND approved='1' $exclude_cat AND cat in ($catquery) ORDER BY date DESC LIMIT $limit"; 
                break; 
            } 
            break; 
        default: 
            if ( !IsSet($cat) ) { 
                $group_title = "Random Images - All Categories"; 
                $query = "SELECT id,user,userid,cat,title,bigimage,views FROM photopost_photos WHERE bigimage!='' AND approved='1' $exclude_cat ORDER BY RAND() DESC LIMIT $limit"; 
                break; 
            } 
            else { 
                $group_title = "Random Images - $catname"; 
                $query = "SELECT id,user,userid,cat,title,bigimage,views FROM photopost_photos WHERE bigimage!='' AND approved='1' $exclude_cat AND cat in ($catquery) ORDER BY RAND() DESC LIMIT $limit"; 
                break; 
            } 
            break; 
    } 
$i = 1; 
$e = 2; 
$col_val = $column; 
  $result = mysql_query_eval($query,$link) or die("Query failed"); 
print "<ul class=\"".$class_gallery."\"> "; 
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) { 
    $photo_name = get_filename( $line['bigimage'] ); 
     print "<li>"; 
            $theext = get_ext( $line['bigimage'] ); 
            $thecat = $line['cat']; 
            $temp_user = ($line["userid"]); 
            $filepath = "$data_dir"."$thecat/thumbs/$photo_name.$theext";
            $image_stats = getimagesize( $filepath );
            $width = $image_stats[0];
            $height = $image_stats[1]; 
            $rel_path = "$rel_dir"."$thecat/thumbs/$photo_name.$theext"; 
             print "<a  class=\"".$class_photopost."\" href=\"$Url_Path"."showphoto.php?photo=".$line['id']. "\" title=\"".$line["title"]."\">"; 
            if ( file_exists( $rel_path ) ) 
                 print "<img src='$filepath' alt='$filepath' width='$width' height='$height' /></a>"; 
            else 
                 print "<img src='".$images_dir."nothumb.gif' alt='$filepath' width='$width' height='$height' /></a>"; 
        
  if ($q_switch == "most_views") {          
         print "<br />".$line["title"]."<br />".$line["views"]." views";    
         print "</a>"; 
   } else { 
         print "<br /> <a  class=\"".$class_photopost."\" href=\"$Url_Path"."showphoto.php?photo=".$line['id']. "\" title=\"".$line["title"]." ".$line["views"]." views\">  ".$line["title"]."<br />".$line["views"]." views";   
         print "</a></li>"; 
   } 
     }
print "    </ul> "; 
// Closing connection 
mysql_close($link); 
// mysql_close($db_link); 
?>

Link to comment
Share on other sites

$title = 'PHP freaks Rocks';

$title = substr($title,0,strrpos($title,' '));

echo $title;

 

You should define what your character limit is first, so you know if the title needs chopping or not,

something like

if(strlen($title) > {
//... rest of code
}

 

or else, that code will also convert a shorter title like 'PHP freaks' into 'PHP' unnecessarily.

Link to comment
Share on other sites

you could create a function (so you can re-use it later on other situations)

function cutTitle($string) {
   if (strlen($string) >  {
       preg_match('/(.{' . 8 . '}.*?)\b/', $string, $matches);
       return rtrim($matches[1]) . '...';
   }
   else {
       return $str;
   }
}

 

 

then, instead of

print "<br />".$line["title"]."<br />".$line["views"]." views";

try something like

print "<br />".cutTitle($line['title'])."<br />".$line["views"]." views";

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.