2 declare(strict_types = 1);
19 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
43 'Non-xhtml single hr' => [
49 '<hr />' . CRLF .
'<hr />',
51 'Linebreak followed by hr' => [
55 'White space followed by hr' => [
57 ' ' . CRLF .
'<hr />',
59 'White space followed linebreak and hr' => [
60 ' ' . CRLF .
'<hr />',
61 ' ' . CRLF .
'<hr />',
63 'br followed by hr' => [
65 '<br />' . CRLF .
'<hr />',
67 'br followed by linebreak and hr' => [
68 '<br />' . CRLF .
'<hr />',
69 '<br />' . CRLF .
'<hr />',
71 'Preserved div followed by hr' => [
72 '<div>Some text</div><hr />',
73 '<div>Some text</div>' . CRLF .
'<hr />',
75 'Preserved div followed by linebreak and hr' => [
76 '<div>Some text</div>' . CRLF .
'<hr />',
77 '<div>Some text</div>' . CRLF .
'<hr />',
79 'h1 followed by linebreak and hr' => [
80 '<h1>Some text</h1>' . CRLF .
'<hr />',
81 '<h1>Some text</h1>' . CRLF .
'<hr />',
83 'Paragraph followed by linebreak and hr' => [
84 '<p>Some text</p>' . CRLF .
'<hr />',
85 '<p>Some text</p>' . CRLF .
'<hr />',
87 'Some text without HTML tags' => [
91 'Some text followed by hr' => [
93 'Some text' . CRLF .
'<hr />',
95 'Some text followed by linebreak and hr' => [
96 'Some text' . CRLF .
'<hr />',
97 'Some text' . CRLF .
'<hr />',
109 $GLOBALS[
'TYPO3_CONF_VARS'][
'SYS'][
'features'][
'security.backend.htmlSanitizeRte'] =
false;
112 $this->assertEquals($expectedResult, $subject->RTE_transform($content, [],
'db', $thisConfig));
125 'Non-xhtml single hr' => [
131 '<hr />' . CRLF .
'<hr />',
133 'Linebreak followed by hr' => [
137 'White space followed by hr' => [
139 '<p> </p>' . CRLF .
'<hr />',
141 'White space followed by linebreak and hr' => [
142 ' ' . CRLF .
'<hr />',
143 '<p> </p>' . CRLF .
'<hr />',
145 'br followed by hr' => [
147 '<p><br /></p>' . CRLF .
'<hr />',
149 'br followed by linebreak and hr' => [
150 '<br />' . CRLF .
'<hr />',
151 '<p><br /></p>' . CRLF .
'<hr />',
153 'Preserved div followed by hr' => [
154 '<div>Some text</div>' .
'<hr />',
155 '<div><p>Some text</p></div>' . CRLF .
'<hr />',
157 'Preserved div followed by linebreak and hr' => [
158 '<div>Some text</div>' . CRLF .
'<hr />',
159 '<div><p>Some text</p></div>' . CRLF .
'<hr />',
161 'h1 followed by linebreak and hr' => [
162 '<h1>Some text</h1>' . CRLF .
'<hr />',
163 '<h1>Some text</h1>' . CRLF .
'<hr />',
165 'Paragraph followed by linebreak and hr' => [
166 '<p>Some text</p>' . CRLF .
'<hr />',
167 '<p>Some text</p>' . CRLF .
'<hr />',
169 'Some text followed by hr' => [
171 '<p>Some text</p>' . CRLF .
'<hr />',
173 'Some text followed by linebreak and hr' => [
174 'Some text' . CRLF .
'<hr />',
175 '<p>Some text</p>' . CRLF .
'<hr />',
187 $GLOBALS[
'TYPO3_CONF_VARS'][
'SYS'][
'features'][
'security.backend.htmlSanitizeRte'] =
false;
188 $subject =
new RteHtmlParser();
190 $this->assertEquals($expectedResult, $subject->RTE_transform($subject->RTE_transform($content, [],
'db', $thisConfig), [],
'rte', $thisConfig));
207 'Double linebreak' => [
211 'Empty paragraph' => [
215 'Double empty paragraph' => [
219 'Spacing paragraph' => [
223 'Double spacing paragraph' => [
224 '<p> </p>' .
'<p> </p>',
231 'Plain text followed by linebreak' => [
239 'Paragraph followed by paragraph' => [
240 '<p>paragraph1</p>' .
'<p>paragraph2</p>',
241 '<p>paragraph1</p>' . CRLF .
'<p>paragraph2</p>',
243 'Paragraph followed by paragraph, linebreak-separated' => [
244 '<p>paragraph1</p>' . CRLF .
'<p>paragraph2</p>',
245 '<p>paragraph1</p>' . CRLF .
'<p>paragraph2</p>',
247 'Double spacing paragraph with text' => [
248 '<p> </p><p> </p><p>paragraph1</p>',
249 CRLF . CRLF .
'<p>paragraph1</p>',
251 'Paragraph followed by linebreak' => [
252 '<p>paragraph</p>' . CRLF,
255 'Paragraph followed by spacing paragraph' => [
256 '<p>paragraph</p>' .
'<p> </p>',
257 '<p>paragraph</p>' . CRLF . CRLF,
259 'Paragraph followed by spacing paragraph, linebreak-separated' => [
260 '<p>paragraph</p>' . CRLF .
'<p> </p>',
261 '<p>paragraph</p>' . CRLF . CRLF,
263 'Paragraph followed by double spacing paragraph' => [
264 '<p>paragraph</p>' .
'<p> </p>' .
'<p> </p>',
265 '<p>paragraph</p>' . CRLF . CRLF . CRLF,
267 'Paragraph followed by double spacing paragraph, linebreak-separated' => [
268 '<p>paragraph</p>' . CRLF .
'<p> </p>' . CRLF .
'<p> </p>',
269 '<p>paragraph</p>' . CRLF . CRLF . CRLF,
271 'Paragraph followed by spacing paragraph and by paragraph' => [
272 '<p>paragraph1</p>' .
'<p> </p>' .
'<p>paragraph2</p>',
273 '<p>paragraph1</p>' . CRLF . CRLF .
'<p>paragraph2</p>',
275 'Paragraph followed by spacing paragraph and by paragraph, linebreak-separated' => [
276 '<p>paragraph1</p>' . CRLF .
'<p> </p>' . CRLF .
'<p>paragraph2</p>',
277 '<p>paragraph1</p>' . CRLF . CRLF .
'<p>paragraph2</p>',
279 'Paragraph followed by double spacing paragraph and by paragraph' => [
280 '<p>paragraph1</p>' .
'<p> </p>' .
'<p> </p>' .
'<p>paragraph2</p>',
281 '<p>paragraph1</p>' . CRLF . CRLF . CRLF .
'<p>paragraph2</p>',
283 'Paragraph followed by double spacing paragraph and by paragraph, linebreak-separated' => [
284 '<p>paragraph1</p>' . CRLF .
'<p> </p>' . CRLF .
'<p> </p>' . CRLF .
'<p>paragraph2</p>',
285 '<p>paragraph1</p>' . CRLF . CRLF . CRLF .
'<p>paragraph2</p>',
287 'Paragraph followed by block' => [
288 '<p>paragraph</p>' .
'<h1>block</h1>',
289 '<p>paragraph</p>' . CRLF .
'<h1>block</h1>',
291 'Paragraph followed by block, linebreak-separated' => [
292 '<p>paragraph</p>' . CRLF .
'<h1>block</h1>',
293 '<p>paragraph</p>' . CRLF .
'<h1>block</h1>',
295 'Paragraph followed by spacing paragraph and block' => [
296 '<p>paragraph</p>' .
'<p> </p>' .
'<h1>block</h1>',
297 '<p>paragraph</p>' . CRLF . CRLF .
'<h1>block</h1>',
299 'Paragraph followed by spacing paragraph and block, linebreak-separated' => [
300 '<p>paragraph</p>' . CRLF .
'<p> </p>' . CRLF .
'<h1>block</h1>',
301 '<p>paragraph</p>' . CRLF . CRLF .
'<h1>block</h1>',
303 'Paragraph followed by double spacing paragraph and block' => [
304 '<p>paragraph</p>' .
'<p> </p>' .
'<p> </p>' .
'<h1>block</h1>',
305 '<p>paragraph</p>' . CRLF . CRLF . CRLF .
'<h1>block</h1>',
307 'Paragraph followed by double spacing paragraph and block, linebreak-separated' => [
308 '<p>paragraph</p>' . CRLF .
'<p> </p>' . CRLF .
'<p> </p>' . CRLF .
'<h1>block</h1>',
309 '<p>paragraph</p>' . CRLF . CRLF . CRLF .
'<h1>block</h1>',
311 'Block followed by block' => [
312 '<h1>block1</h1>' .
'<h1>block2</h1>',
313 '<h1>block1</h1>' . CRLF .
'<h1>block2</h1>',
315 'Block followed by block, linebreak-separated' => [
316 '<h1>block1</h1>' . CRLF .
'<h1>block2</h1>',
317 '<h1>block1</h1>' . CRLF .
'<h1>block2</h1>',
319 'Block followed by empty paragraph and block' => [
320 '<h1>block1</h1>' .
'<p></p>' .
'<h1>block2</h1>',
321 '<h1>block1</h1>' . CRLF . CRLF .
'<h1>block2</h1>',
323 'Block followed by empty paragraph aand block, linebreak-separated' => [
324 '<h1>block1</h1>' . CRLF .
'<p></p>' . CRLF .
'<h1>block2</h1>',
325 '<h1>block1</h1>' . CRLF . CRLF .
'<h1>block2</h1>',
327 'Block followed by spacing paragraph' => [
328 '<h1>block1</h1>' .
'<p> </p>',
329 '<h1>block1</h1>' . CRLF . CRLF,
331 'Block followed by spacing paragraph, linebreak-separated' => [
332 '<h1>block1</h1>' . CRLF .
'<p> </p>',
333 '<h1>block1</h1>' . CRLF . CRLF,
335 'Block followed by spacing paragraph and block' => [
336 '<h1>block1</h1>' .
'<p> </p>' .
'<h1>block2</h1>',
337 '<h1>block1</h1>' . CRLF . CRLF .
'<h1>block2</h1>',
339 'Block followed by spacing paragraph and block, linebreak-separated' => [
340 '<h1>block1</h1>' . CRLF .
'<p> </p>' . CRLF .
'<h1>block2</h1>',
341 '<h1>block1</h1>' . CRLF . CRLF .
'<h1>block2</h1>',
343 'Block followed by double spacing paragraph and by block' => [
344 '<h1>block1</h1>' .
'<p> </p>' .
'<p> </p>' .
'<h1>block2</h1>',
345 '<h1>block1</h1>' . CRLF . CRLF . CRLF .
'<h1>block2</h1>',
347 'Block followed by double spacing paragraph and by block, linebreak-separated' => [
348 '<h1>block1</h1>' . CRLF .
'<p> </p>' . CRLF .
'<p> </p>' . CRLF .
'<h1>block2</h1>',
349 '<h1>block1</h1>' . CRLF . CRLF . CRLF .
'<h1>block2</h1>',
351 'Block followed by paragraph and block' => [
352 '<h1>block1</h1>' .
'<p>paragraph</p>' .
'<h1>block2</h1>',
353 '<h1>block1</h1>' . CRLF .
'<p>paragraph</p>' . CRLF .
'<h1>block2</h1>',
355 'Block followed by paragraph and block, linebreak-separated' => [
356 '<h1>block1</h1>' . CRLF .
'<p>paragraph</p>' . CRLF .
'<h1>block2</h1>',
357 '<h1>block1</h1>' . CRLF .
'<p>paragraph</p>' . CRLF .
'<h1>block2</h1>',
359 'Block followed by paragraph, spacing paragraph and block' => [
360 '<h1>block1</h1>' .
'<p>paragraph</p>' .
'<p> </p>' .
'<h1>block2</h1>',
361 '<h1>block1</h1>' . CRLF .
'<p>paragraph</p>' . CRLF . CRLF .
'<h1>block2</h1>',
363 'Block followed by paragraph, spacing paragraph and block, linebreak-separated' => [
364 '<h1>block1</h1>' . CRLF .
'<p>paragraph</p>' . CRLF .
'<p> </p>' . CRLF .
'<h1>block2</h1>',
365 '<h1>block1</h1>' . CRLF .
'<p>paragraph</p>' . CRLF . CRLF .
'<h1>block2</h1>',
376 $subject =
new RteHtmlParser();
378 $this->assertEquals($expectedResult, $subject->RTE_transform($content, [],
'db', $thisConfig));
391 'Single linebreak' => [
395 'Double linebreak' => [
397 '<p> </p>' . CRLF .
'<p> </p>',
399 'Triple linebreak' => [
401 '<p> </p>' . CRLF .
'<p> </p>' . CRLF .
'<p> </p>',
407 'Paragraph followed by single linebreak' => [
411 'Paragraph followed by double linebreak' => [
412 'paragraph' . CRLF . CRLF,
413 '<p>paragraph</p>' . CRLF .
'<p> </p>',
415 'Paragraph followed by triple linebreak' => [
416 'paragraph' . CRLF . CRLF . CRLF,
417 '<p>paragraph</p>' . CRLF .
'<p> </p>' . CRLF .
'<p> </p>',
419 'Paragraph followed by paragraph' => [
420 'paragraph1' . CRLF .
'paragraph2',
421 '<p>paragraph1</p>' . CRLF .
'<p>paragraph2</p>',
423 'Paragraph followed by double linebreak and paragraph' => [
424 'paragraph1' . CRLF . CRLF .
'paragraph2',
425 '<p>paragraph1</p>' . CRLF .
'<p> </p>' . CRLF .
'<p>paragraph2</p>',
427 'Paragraph followed by triple linebreak and paragraph' => [
428 'paragraph1' . CRLF . CRLF . CRLF .
'paragraph2',
429 '<p>paragraph1</p>' . CRLF .
'<p> </p>' . CRLF .
'<p> </p>' . CRLF .
'<p>paragraph2</p>',
431 'Paragraph followed by block' => [
432 'paragraph' .
'<h1>block</h1>',
433 '<p>paragraph</p>' . CRLF .
'<h1>block</h1>',
435 'Paragraph followed by linebreak and block' => [
436 'paragraph' . CRLF .
'<h1>block</h1>',
437 '<p>paragraph</p>' . CRLF .
'<h1>block</h1>',
439 'Paragraph followed by double linebreak and block' => [
440 'paragraph' . CRLF . CRLF .
'<h1>block</h1>',
441 '<p>paragraph</p>' . CRLF .
'<p> </p>' . CRLF .
'<h1>block</h1>',
443 'Paragraph followed by triple linebreak and block' => [
444 'paragraph' . CRLF . CRLF . CRLF .
'<h1>block</h1>',
445 '<p>paragraph</p>' . CRLF .
'<p> </p>' . CRLF .
'<p> </p>' . CRLF .
'<h1>block</h1>',
447 'Block followed by block' => [
448 '<h1>block1</h1>' .
'<h1>block2</h1>',
449 '<h1>block1</h1>' . CRLF .
'<h1>block2</h1>',
451 'Block followed by single linebreak and block' => [
452 '<h1>block1</h1>' . CRLF .
'<h1>block2</h1>',
453 '<h1>block1</h1>' . CRLF .
'<h1>block2</h1>',
455 'Block followed by double linebreak and block' => [
456 '<h1>block1</h1>' . CRLF . CRLF .
'<h1>block2</h1>',
457 '<h1>block1</h1>' . CRLF .
'<p> </p>' . CRLF .
'<h1>block2</h1>',
459 'Block followed by triple linebreak and block' => [
460 '<h1>block1</h1>' . CRLF . CRLF . CRLF .
'<h1>block2</h1>',
461 '<h1>block1</h1>' . CRLF .
'<p> </p>' . CRLF .
'<p> </p>' . CRLF .
'<h1>block2</h1>',
463 'Block followed by paragraph and block' => [
464 '<h1>block1</h1>' . CRLF .
'paragraph' . CRLF .
'<h1>block2</h1>',
465 '<h1>block1</h1>' . CRLF .
'<p>paragraph</p>' . CRLF .
'<h1>block2</h1>',
476 $subject =
new RteHtmlParser();
478 $this->assertEquals($expectedResult, $subject->RTE_transform($content, [],
'rte', $thisConfig));
491 'Empty paragraph' => [
495 'Double empty paragraph' => [
497 '<p> </p>' . CRLF .
'<p> </p>',
499 'Triple empty paragraph' => [
500 '<p></p><p></p><p></p>',
501 '<p> </p>' . CRLF .
'<p> </p>' . CRLF .
'<p> </p>',
507 'Plain text followed by linebreak' => [
509 '<p>plain text </p>',
511 'Plain text followed by paragraph' => [
512 'plain text' .
'<p>paragraph</p>',
513 '<p>plain text</p>' . CRLF .
'<p>paragraph</p>',
515 'Spacing paragraph' => [
519 'Double spacing paragraph' => [
520 '<p> </p>' . CRLF .
'<p> </p>',
521 '<p> </p>' . CRLF .
'<p> </p>',
527 'Paragraph followed by linebreak' => [
528 '<p>paragraph</p>' . CRLF,
531 'Paragraph followed by spacing paragraph' => [
532 '<p>paragraph</p>' . CRLF .
'<p> </p>',
533 '<p>paragraph</p>' . CRLF .
'<p> </p>',
535 'Paragraph followed by double spacing paragraph' => [
536 '<p>paragraph</p>' . CRLF .
'<p> </p>' . CRLF .
'<p> </p>',
537 '<p>paragraph</p>' . CRLF .
'<p> </p>' . CRLF .
'<p> </p>',
539 'Paragraph followed by paragraph' => [
540 '<p>paragraph1</p>' .
'<p>paragraph2</p>',
541 '<p>paragraph1</p>' . CRLF .
'<p>paragraph2</p>',
543 'Paragraph followed by paragraph, linebreak-separated' => [
544 '<p>paragraph1</p>' . CRLF .
'<p>paragraph2</p>',
545 '<p>paragraph1</p>' . CRLF .
'<p>paragraph2</p>',
547 'Paragraph followed by spacing paragraph and by paragraph' => [
548 '<p>paragraph1</p>' .
'<p> </p>' .
'<p>paragraph2</p>',
549 '<p>paragraph1</p>' . CRLF .
'<p> </p>' . CRLF .
'<p>paragraph2</p>',
551 'Paragraph followed by spacing paragraph and by paragraph, linebreak-separated' => [
552 '<p>paragraph1</p>' . CRLF .
'<p> </p>' . CRLF .
'<p>paragraph2</p>',
553 '<p>paragraph1</p>' . CRLF .
'<p> </p>' . CRLF .
'<p>paragraph2</p>',
555 'Paragraph followed by double spacing paragraph and by paragraph' => [
556 '<p>paragraph1</p>' .
'<p> </p>' .
'<p> </p>' .
'<p>paragraph2</p>',
557 '<p>paragraph1</p>' . CRLF .
'<p> </p>' . CRLF .
'<p> </p>' . CRLF .
'<p>paragraph2</p>',
559 'Paragraph followed by double spacing paragraph and by paragraph, linebreak-separated' => [
560 '<p>paragraph1</p>' . CRLF .
'<p> </p>' . CRLF .
'<p> </p>' . CRLF .
'<p>paragraph2</p>',
561 '<p>paragraph1</p>' . CRLF .
'<p> </p>' . CRLF .
'<p> </p>' . CRLF .
'<p>paragraph2</p>',
563 'Paragraph followed by block' => [
564 '<p>paragraph</p>' .
'<h1>block</h1>',
565 '<p>paragraph</p>' . CRLF .
'<h1>block</h1>',
567 'Paragraph followed by block, linebreak-separated' => [
568 '<p>paragraph</p>' . CRLF .
'<h1>block</h1>',
569 '<p>paragraph</p>' . CRLF .
'<h1>block</h1>',
571 'Paragraph followed by spacing paragraph and by block' => [
572 '<p>paragraph</p>' .
'<p> </p>' .
'<h1>block</h1>',
573 '<p>paragraph</p>' . CRLF .
'<p> </p>' . CRLF .
'<h1>block</h1>',
575 'Paragraph followed by spacing paragraph and by block, linebreak-separated' => [
576 '<p>paragraph</p>' . CRLF .
'<p> </p>' . CRLF .
'<h1>block</h1>',
577 '<p>paragraph</p>' . CRLF .
'<p> </p>' . CRLF .
'<h1>block</h1>',
579 'Paragraph followed by double spacing paragraph and by block' => [
580 '<p>paragraph</p>' .
'<p> </p>' .
'<p> </p>' .
'<h1>block</h1>',
581 '<p>paragraph</p>' . CRLF .
'<p> </p>' . CRLF .
'<p> </p>' . CRLF .
'<h1>block</h1>',
583 'Paragraph followed by double spacing paragraph and by block, linebreak-separated' => [
584 '<p>paragraph</p>' . CRLF .
'<p> </p>' . CRLF .
'<p> </p>' . CRLF .
'<h1>block</h1>',
585 '<p>paragraph</p>' . CRLF .
'<p> </p>' . CRLF .
'<p> </p>' . CRLF .
'<h1>block</h1>',
587 'Block followed by block' => [
588 '<h1>block1</h1>' .
'<h1>block2</h1>',
589 '<h1>block1</h1>' . CRLF .
'<h1>block2</h1>',
591 'Block followed by block, linebreak-separated' => [
592 '<h1>block1</h1>' . CRLF .
'<h1>block2</h1>',
593 '<h1>block1</h1>' . CRLF .
'<h1>block2</h1>',
595 'Block followed by empty paragraph and by block' => [
596 '<h1>block1</h1>' .
'<p></p>' .
'<h1>block2</h1>',
597 '<h1>block1</h1>' . CRLF .
'<p> </p>' . CRLF .
'<h1>block2</h1>',
599 'Block followed by empty paragraph and by block, linebreak-separated' => [
600 '<h1>block1</h1>' . CRLF .
'<p></p>' . CRLF .
'<h1>block2</h1>',
601 '<h1>block1</h1>' . CRLF .
'<p> </p>' . CRLF .
'<h1>block2</h1>',
603 'Block followed by spacing paragraph and by block' => [
604 '<h1>block1</h1>' .
'<p> </p>' .
'<h1>block2</h1>',
605 '<h1>block1</h1>' . CRLF .
'<p> </p>' . CRLF .
'<h1>block2</h1>',
607 'Block followed by spacing paragraph and by block, linebreak-separated' => [
608 '<h1>block1</h1>' . CRLF .
'<p> </p>' . CRLF .
'<h1>block2</h1>',
609 '<h1>block1</h1>' . CRLF .
'<p> </p>' . CRLF .
'<h1>block2</h1>',
611 'Block followed by double spacing paragraph and by block' => [
612 '<h1>block1</h1>' .
'<p> </p>' .
'<p> </p>' .
'<h1>block2</h1>',
613 '<h1>block1</h1>' . CRLF .
'<p> </p>' . CRLF .
'<p> </p>' . CRLF .
'<h1>block2</h1>',
615 'Block followed by double spacing paragraph and by block, linebreak-separated' => [
616 '<h1>block1</h1>' . CRLF .
'<p> </p>' . CRLF .
'<p> </p>' . CRLF .
'<h1>block2</h1>',
617 '<h1>block1</h1>' . CRLF .
'<p> </p>' . CRLF .
'<p> </p>' . CRLF .
'<h1>block2</h1>',
628 $subject =
new RteHtmlParser();
630 $this->assertEquals($expectedResult, $subject->RTE_transform($subject->RTE_transform($content, [],
'db', $thisConfig), [],
'rte', $thisConfig));
640 '<p><a name="some_anchor"></a></p>' . CRLF .
'<h3>Some headline here</h3>',
641 '<p><a name="some_anchor"></a></p>' . CRLF .
'<h3>Some headline here</h3>'
644 '<p><a id="some_anchor"></a></p>' . CRLF .
'<h3>Some headline here</h3>',
645 '<p><a id="some_anchor"></a></p>' . CRLF .
'<h3>Some headline here</h3>'
648 '<p><a name="some_anchor" id="some_anchor"></a></p>' . CRLF .
'<h3>Some headline here</h3>',
649 '<p><a name="some_anchor" id="some_anchor"></a></p>' . CRLF .
'<h3>Some headline here</h3>'
652 '<p><a id="some_anchor">Some text inside the anchor</a></p>',
653 '<p><a id="some_anchor">Some text inside the anchor</a></p>'
666 $subject =
new RteHtmlParser();
668 self::assertEquals($expectedResult, $subject->RTE_transform($content, [],
'db', $thisConfig));
678 '<p><a name="some_anchor"></a></p>' . CRLF .
'<h3>Some headline here</h3>',
679 '<p><a name="some_anchor"></a></p>' . CRLF .
'<h3>Some headline here</h3>'
682 '<p><a id="some_anchor"></a></p>' . CRLF .
'<h3>Some headline here</h3>',
683 '<p><a id="some_anchor"></a></p>' . CRLF .
'<h3>Some headline here</h3>'
686 '<p><a name="some_anchor" id="some_anchor"></a></p>' . CRLF .
'<h3>Some headline here</h3>',
687 '<p><a name="some_anchor" id="some_anchor"></a></p>' . CRLF .
'<h3>Some headline here</h3>'
690 '<p><a id="some_anchor">Some text inside the anchor</a></p>',
691 '<p><a id="some_anchor">Some text inside the anchor</a></p>'
704 $subject =
new RteHtmlParser();
706 self::assertEquals($expectedResult, $subject->RTE_transform($subject->RTE_transform($content, [],
'db', $thisConfig), [],
'rte', $thisConfig));