WordPress.org

Ready to get started?Download WordPress

Forums

How to exclude smileys from image count... (6 posts)

  1. doffer
    Member
    Posted 9 years ago #

    I have found a fairly accurate word/image counter, and have made it work nice on my blog. The only thing i don't like is that the image counter is counting the smileys as well.. They're a part of the text, and I don't consider the nether text nor images... So what I would like to do is to modify this script so that it gives me the image count without counting the smileys... Guess it's supposed to be something like NOT or something in the php, but I'm totally new to that... This is the code for the plugin:

    <?php
    /*
    Plugin Name: Word Count
    Plugin URI: http://www.jonas.rabbe.com/archives/2005/05/06/word-count-plugin-for-wordpress/
    Description: This plugin counts the number of words and images per post.
    Version: 1.0
    Author: Jonas Rabbe
    Author URI: http://www.jonas.rabbe.com/
    */

    // This just echoes the chosen line, we'll position it later
    function teb_word_count($display = true) {
    global $wpdb, $id;
    $post = $wpdb->get_var("SELECT post_content FROM $wpdb->posts WHERE ID = $id");

    $post_content = apply_filters('the_content', $post);
    $words = trim(strip_tags($post_content));
    if( $words == '' ) {
    $wordcount = 0;
    } else {
    $words = explode(' ', $words);
    $wordcount = count($words);
    }
    $ret_words = number_format($wordcount) . ' ' . ($wordcount == 1 ? 'ord' : 'ord');

    $imagecount = preg_match_all('/<img/', $post_content, $images);
    $ret_images = number_format($imagecount) . ' ' . ($imagecount == 1 ? 'bilde' : 'bilder');

    $text = $ret_words . ($imagecount > 0 ? ', ' . $ret_images : '');

    if( !$display ) {
    return $text;
    }

    echo $text;
    }
    ?>

    All response is appreciated :)

    My regards

  2. Cypher
    Member
    Posted 9 years ago #

    That plugin is based on my original plugin, but to make it not count smiley's, you'd just have to tune the $imagecount line to be more restrictive.

    Currently it is looking just for the <img tag and counting them. The regular expression patter would have to be changed to look for <img but exclude the smiley directory (as an example).

    If you're up to some coding/hacking. :) You can check out:
    http://us4.php.net/preg_match_all

    And play around with the regex.

    Regards

  3. doffer
    Member
    Posted 9 years ago #

    The regex is just messy to me, but the only thing I need is to exclude is the smiley directory... If someone could just add a line to make it work, I would be very happy, since I'm no hacker/coder my self :(

  4. m0n5t3r
    Member
    Posted 9 years ago #

    Here you go:
    $imagecount = preg_match_all('/<img/', $post_content, $images);
    $imagecount -= preg_match_all('/<img[^>]+(?=(class='wp-smiley'))/s', $post_content, $images);

  5. doffer
    Member
    Posted 9 years ago #

    Guess I misunderstood you, because something got wrong... I'm getting this error: Parse error: parse error, unexpected T_STRING in /usr/home/web/wno14743/blog/wp-content/plugins/teb-word-count.php on line 27

    <?php
    /*
    Plugin Name: Word Count
    Plugin URI: http://www.jonas.rabbe.com/archives/2005/05/06/word-count-plugin-for-wordpress/
    Description: This plugin counts the number of words and images per post.
    Version: 1.0
    Author: Jonas Rabbe
    Author URI: http://www.jonas.rabbe.com/
    */

    // This just echoes the chosen line, we'll position it later
    function teb_word_count($display = true) {
    global $wpdb, $id;
    $post = $wpdb->get_var("SELECT post_content FROM $wpdb->posts WHERE ID = $id");

    $post_content = apply_filters('the_content', $post);
    $words = trim(strip_tags($post_content));
    if( $words == '' ) {
    $wordcount = 0;
    } else {
    $words = explode(' ', $words);
    $wordcount = count($words);
    }
    $ret_words = number_format($wordcount) . ' ' . ($wordcount == 1 ? 'ord' : 'ord');

    $imagecount = preg_match_all('/<img/', $post_content, $images);
    $imagecount -=preg_match_all('/<img[^>]+(?=(class='wp-smiley'))/s', $post_content, $images);
    $ret_images = number_format($imagecount) . ' ' . ($imagecount == 1 ? 'bilde' : 'bilder');

    $text = $ret_words . ($imagecount > 0 ? ' og ' . $ret_images : '');

    if( !$display ) {
    return $text;
    }

    echo $text;
    }
    ?>

  6. m0n5t3r
    Member
    Posted 9 years ago #

    My typo, sorry:

    $imagecount -= preg_match_all('/<img[^>]+(?=(class=\'wp-smiley\'))/s', $post_content, $images);

    edit: it wasn't a typo after all, it was the forum software screwing up escaped code.

Topic Closed

This topic has been closed to new replies.

About this Topic

Tags