[BUGFIX] Respect line breaks in stdWrap.cropHTML 01/19501/2
authorBenjamin Mack <benni@typo3.org>
Mon, 1 Apr 2013 20:20:59 +0000 (22:20 +0200)
committerBenjamin Mack <benni@typo3.org>
Fri, 5 Apr 2013 19:45:53 +0000 (21:45 +0200)
By using the PCRE_DOTALL (/s) pattern modifier in the cropHTML
regular expression for preserving HTML entities the dot in the
pattern will include line breaks.
Resolves: #28741
Releases: 6.1, 6.0, 4.7, 4.5

Change-Id: Idb12d85681b0304730b9d76843b8352013e88123
Reviewed-on: https://review.typo3.org/19501
Reviewed-by: Benjamin Mack
Tested-by: Benjamin Mack
typo3/sysext/cms/tslib/class.tslib_content.php

index 5267eb7..47a30b5 100644 (file)
@@ -3724,8 +3724,8 @@ class tslib_cObj {
                                        $patternMatchEntityAsSingleChar = '(&[^&\s;]{2,8};|.)';
 
                                        $cropRegEx = $chars < 0
-                                               ? '#' . $patternMatchEntityAsSingleChar . '{0,' . ($cropPosition + 1) . '}$#ui'
-                                               : '#^' . $patternMatchEntityAsSingleChar . '{0,' . ($cropPosition + 1) . '}#ui';
+                                               ? '#' . $patternMatchEntityAsSingleChar . '{0,' . ($cropPosition + 1) . '}$#uis'
+                                               : '#^' . $patternMatchEntityAsSingleChar . '{0,' . ($cropPosition + 1) . '}#uis';
                                        if (preg_match($cropRegEx, $tempContent, $croppedMatch)) {
                                                $tempContentPlusOneCharacter = $croppedMatch[0];
                                        } else {
@@ -3733,14 +3733,14 @@ class tslib_cObj {
                                        }
 
                                        $cropRegEx = $chars < 0
-                                               ? '#' . $patternMatchEntityAsSingleChar . '{0,' . $cropPosition . '}$#ui'
-                                               : '#^' . $patternMatchEntityAsSingleChar . '{0,' . $cropPosition . '}#ui';
+                                               ? '#' . $patternMatchEntityAsSingleChar . '{0,' . $cropPosition . '}$#uis'
+                                               : '#^' . $patternMatchEntityAsSingleChar . '{0,' . $cropPosition . '}#uis';
                                        if (preg_match($cropRegEx, $tempContent, $croppedMatch)) {
                                                $tempContent = $croppedMatch[0];
                                                if (($crop2space) && ($tempContentPlusOneCharacter !== FALSE)) {
                                                        $cropRegEx = $chars < 0
-                                                               ? '#(?<=\s)' . $patternMatchEntityAsSingleChar . '{0,' . $cropPosition . '}$#ui'
-                                                               : '#^' . $patternMatchEntityAsSingleChar . '{0,' . $cropPosition . '}(?=\s)#ui';
+                                                               ? '#(?<=\s)' . $patternMatchEntityAsSingleChar . '{0,' . $cropPosition . '}$#uis'
+                                                               : '#^' . $patternMatchEntityAsSingleChar . '{0,' . $cropPosition . '}(?=\s)#uis';
                                                        if (preg_match($cropRegEx, $tempContentPlusOneCharacter, $croppedMatch)) {
                                                                $tempContent = $croppedMatch[0];
                                                        }