Browse Source

Fix tag order when closing open tags with TextHelper::truncate()

Kyle Robinson Young 14 years ago
parent
commit
acca796d10

+ 1 - 1
lib/Cake/Test/Case/View/Helper/TextHelperTest.php

@@ -129,7 +129,7 @@ Steve/era/distinto/elpepueconeg/20111009elpneglse_4/Tes</a></span></p>
 Steve Jobs escrita por Walter Isaacson  "<strong>Steve Jobs by Walter
 Isaacson</strong>", aquí os dejamos la dirección de amazon donde
 podeís adquirirla.</span></p>
-<p><span style="font-size: medium;"><a>... </p></span></a>';
+<p><span style="font-size: medium;"><a>... </a></span></p>';
 		$this->assertEquals($expected, $result);
 	}
 

+ 9 - 3
lib/Cake/View/Helper/TextHelper.php

@@ -287,9 +287,15 @@ class TextHelper extends AppHelper {
 				$bits = mb_substr($truncate, $spacepos);
 				preg_match_all('/<\/([a-z]+)>/', $bits, $droppedTags, PREG_SET_ORDER);
 				if (!empty($droppedTags)) {
-					foreach ($droppedTags as $closingTag) {
-						if (!in_array($closingTag[1], $openTags)) {
-							array_unshift($openTags, $closingTag[1]);
+					if (!empty($openTags)) {
+						foreach ($droppedTags as $closingTag) {
+							if (!in_array($closingTag[1], $openTags)) {
+								array_unshift($openTags, $closingTag[1]);
+							}
+						}
+					} else {
+						foreach ($droppedTags as $closingTag) {
+							array_push($openTags, $closingTag[1]);
 						}
 					}
 				}