1
0
mirror of https://github.com/e107inc/e107.git synced 2025-08-06 14:46:56 +02:00

Linkwords: Ignore commented HTML code during processing.

This commit is contained in:
Cameron
2022-03-15 13:47:46 -07:00
parent c737e0c550
commit 8f2776bc46
2 changed files with 22 additions and 5 deletions

View File

@@ -233,6 +233,7 @@ class linkwords_parse
// Split up by HTML tags and process the odd bits here
$ptext = "";
$lflag = FALSE;
$cflag = false; // commented code prsent.
// Shouldn't need utf-8 on next line - just looking for HTML tags
$content = preg_split('#(<.*?>)#mis', $text, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE );
@@ -241,12 +242,19 @@ class linkwords_parse
foreach($content as $cont)
{
if(strpos($cont, '-->') !== false)
{
$cflag = false; // end of commented code
$ptext .= $cont;
continue;
}
if ($cont[0] === "<") // Its some HTML
{
$ptext .= $cont;
if (strpos($cont, "<a") === 0) $lflag = true;
if (strpos($cont, "</a") === 0) $lflag = false;
if (strpos($cont, "<!--") === 0) $cflag = true; // start of commented code.
if (strpos($cont, "<a") === 0) $lflag = true; // start of link
if (strpos($cont, "</a") === 0) $lflag = false; // end of link.
if($area === 'BODY' && !isset($this->area_opts['TITLE'])) // disable linking on header tag content unless enabled in prefs.
{
@@ -263,7 +271,7 @@ class linkwords_parse
}
else // Its the text in between
{
if ($lflag) // Its probably within a link - leave unchanged
if ($lflag || $cflag) // Its probably within a link - leave unchanged
{
$ptext .= $cont;
}

View File

@@ -81,13 +81,22 @@
'text' => "<h3>Body only title</h3><p>body only text</p>",
'expected' => "<h3>Body only title</h3><p><a class=\"lw-link lw-1\" href=\"/body-link\" >body only</a> text</p>",
),
// Ignore commented code.
6 => array(
'text' => "<!-- <div>Body only title</div> --> <p>body only text</p>",
'expected' => "<!-- <div>Body only title</div> --> <p><a class=\"lw-link lw-2\" href=\"/body-link\" >body only</a> text</p>",
),
7 => array(
'text' => "contact us link <p>body only text</p>",
'expected' => '<a class="lw-tip lw-link lw-2" href="/contact.php" title="Contact Us Now" >contact us</a> <a class="lw-link lw-2" href="/page-link" >link</a> <p><a class="lw-link lw-3" href="/body-link" >body only</a> text</p>',
),
);
foreach($tests as $val)
foreach($tests as $index => $val)
{
$result = $this->lw->toHTML($val['text'], 'BODY');
$this->assertEquals($val['expected'],$result);
$this->assertEquals($val['expected'],$result, 'Test #'.$index.' failed. ');
}