@@ -247,38 +247,21 @@ protected function removeWhitespace() {
247
247
foreach ($ nodeList as $ node ) {
248
248
/** @var \DOMNode $node */
249
249
250
- // keep white space inside special elements
251
- if (in_array ($ node ->parentNode ->nodeName , $ this ->options ['keep_whitespace_in ' ])) continue ;
252
-
253
250
if (in_array ($ node ->parentNode ->nodeName , $ this ->options ['keep_whitespace_in ' ])) {
254
- // $node->nodeValue = trim($node->nodeValue);
255
251
continue ;
256
252
};
257
253
258
- // 1. "Trim" each text node by removing its leading and trailing spaces and newlines.
259
- // Modified by CS: keep whitespace around inline elements
260
- if (in_array ($ node ->parentNode ->nodeName , $ this ->options ['keep_whitespace_around ' ])) {
261
- $ replacement = ' ' ;
262
- } else {
263
- $ replacement = '' ;
264
- }
254
+ $ node ->nodeValue = str_replace (["\r" , "\n" , "\t" ], ' ' , $ node ->nodeValue );
255
+ $ node ->nodeValue = preg_replace ('/\s{2,}/ ' , ' ' , $ node ->nodeValue );
265
256
266
- $ r_replacement = $ replacement ;
267
- if ($ node ->previousSibling && in_array ($ node ->previousSibling ->nodeName , $ this ->options ['keep_whitespace_around ' ])) {
268
- $ r_replacement = ' ' ;
257
+ if (!($ node ->previousSibling && in_array ($ node ->previousSibling ->nodeName , $ this ->options ['keep_whitespace_around ' ]))) {
258
+ $ node ->nodeValue = ltrim ($ node ->nodeValue );
269
259
}
270
- $ node ->nodeValue = preg_replace ('/^[\s\r\n]+/ ' , $ r_replacement , $ node ->nodeValue );
271
260
272
- $ l_replacement = $ replacement ;
273
- if ($ node ->nextSibling && in_array ($ node ->nextSibling ->nodeName , $ this ->options ['keep_whitespace_around ' ])) {
274
- $ l_replacement = ' ' ;
261
+ if (!($ node ->nextSibling && in_array ($ node ->nextSibling ->nodeName , $ this ->options ['keep_whitespace_around ' ]))) {
262
+ $ node ->nodeValue = rtrim ($ node ->nodeValue );
275
263
}
276
- $ node ->nodeValue = preg_replace ('/[\s\r\n]+$/ ' , $ l_replacement , $ node ->nodeValue );
277
-
278
- $ node ->nodeValue = preg_replace ('/[\s]+/ ' , ' ' , $ node ->nodeValue );
279
-
280
264
281
- // 2. Resulting text node may have become "empty" (zero length nodeValue) after trim. If so, remove it from the dom.
282
265
if ((strlen ($ node ->nodeValue ) == 0 )) {
283
266
$ node ->parentNode ->removeChild ($ node );
284
267
}
0 commit comments