diff --git a/lib/excerpt_parser.rb b/lib/excerpt_parser.rb
index af38f8635db..133d0875f74 100644
--- a/lib/excerpt_parser.rb
+++ b/lib/excerpt_parser.rb
@@ -2,6 +2,8 @@ class ExcerptParser < Nokogiri::XML::SAX::Document
 
   attr_reader :excerpt
 
+  SPAN_REGEX = /<\s*span[^>]*class\s*=\s*['|"]excerpt['|"][^>]*>/
+
   def initialize(length, options=nil)
     @length = length
     @excerpt = ""
@@ -14,10 +16,14 @@ class ExcerptParser < Nokogiri::XML::SAX::Document
   end
 
   def self.get_excerpt(html, length, options)
-    me = self.new(length,options)
+    html ||= ''
+    if (html.include? 'excerpt') && (SPAN_REGEX === html)
+      length = html.length
+    end
+    me = self.new(length, options)
     parser = Nokogiri::HTML::SAX::Parser.new(me)
     catch(:done) do
-      parser.parse(html) unless html.nil?
+      parser.parse(html)
     end
     me.excerpt.strip!
     me.excerpt
diff --git a/spec/components/pretty_text_spec.rb b/spec/components/pretty_text_spec.rb
index 51ebd41ac43..90147cfbb9f 100644
--- a/spec/components/pretty_text_spec.rb
+++ b/spec/components/pretty_text_spec.rb
@@ -196,14 +196,12 @@ describe PrettyText do
       post.excerpt.should == "hi"
     end
 
-    it "handles span excerpt that starts before the max length" do
-      text =  "123456789 123456789 12345679 123456789 123456789 " +
-              "as long as span starts before max length of the " +
-              "<span class='excerpt'>the specified excerpt</span>" +
-              "of the post  will be used"
-      PrettyText.excerpt(text, 100).should == 'the specified excerpt'
+    it "ignores max excerpt length if a span excerpt is specified" do
+      two_hundred = "123456789 " * 20 + "."
+      text =  two_hundred + "<span class='excerpt'>#{two_hundred}</span>" + two_hundred
+      PrettyText.excerpt(text, 100).should == two_hundred
       post = Fabricate(:post, raw: text)
-      post.excerpt.should == 'the specified excerpt'
+      post.excerpt.should == two_hundred
     end
 
   end