diff --git a/src/Umbraco.Web/HtmlStringUtilities.cs b/src/Umbraco.Web/HtmlStringUtilities.cs
index d66c965a51..7d51197984 100644
--- a/src/Umbraco.Web/HtmlStringUtilities.cs
+++ b/src/Umbraco.Web/HtmlStringUtilities.cs
@@ -248,15 +248,15 @@ namespace Umbraco.Web
outputms.Position = 0;
using (TextReader outputtr = new StreamReader(outputms))
{
- string result = String.Empty;
+ string result = string.Empty;
string firstTrim = outputtr.ReadToEnd().Replace(" ", " ").Trim();
//Check to see if there is an empty char between the hellip and the output string
//if there is, remove it
- if (string.IsNullOrEmpty(firstTrim) == false)
+ if (string.IsNullOrWhiteSpace(firstTrim) == false)
{
- result = firstTrim[firstTrim.Length - hellip.Length -1] == ' ' ? firstTrim.Remove(firstTrim.Length - hellip.Length -1, 1) : firstTrim;
+ result = firstTrim[firstTrim.Length - hellip.Length - 1] == ' ' ? firstTrim.Remove(firstTrim.Length - hellip.Length - 1, 1) : firstTrim;
}
return new HtmlString(result);
}
@@ -274,19 +274,17 @@ namespace Umbraco.Web
public int WordsToLength(string html, int words, bool tagsAsContent)
{
HtmlDocument doc = new HtmlDocument();
+ doc.LoadHtml(html);
int wordCount = 0,
length = 0,
- insideTagCounter = length,
maxWords = words;
-
string strippedOfTags = string.Empty;
+ bool invalidHtml = doc.ParseErrors.Any();
//If tagsAsContent is on, use the string stripped of html tags
if (tagsAsContent == false)
{
- doc.LoadHtml(html);
-
foreach (var node in doc.DocumentNode.ChildNodes)
{
strippedOfTags += node.InnerText;
@@ -304,13 +302,9 @@ namespace Umbraco.Web
//Check if we have a space inside a tag and increase the length if we do
if (html[length].Equals('<') && html[length + 1].Equals('/') == false && tagsAsContent)
{
- while (html[insideTagCounter].Equals('>') == false)
+ while (html[length].Equals('>') == false && invalidHtml == false)
{
- if (html[insideTagCounter].Equals(' '))
- {
- length++;
- }
- insideTagCounter++;
+ length++;
}
}
length++;