- Модуль: search
- Путь к файлу: ~/bitrix/modules/search/classes/general/search.php
- Класс: CAllSearch
- Вызов: CAllSearch::RemovePHP
static function RemovePHP($str)
{
$res = "";
$a = preg_split('/(<'.'\?|\?'.'>|\/\'.'*|\'.'*'.'\/|\/\/|'|"|\n)/', $str, -1, PREG_SPLIT_DELIM_CAPTURE);
$c = count($a);
$i = 0;
$bPHP = false;
while ($i < $c)
{
if ($a[$i] == ''' && $bPHP)
{
while ((++$i) < $c)
{
if ($a[$i] === ''')
{
$m = array();
if (preg_match('/(\\+)$/', $a[$i - 1], $m))
{
if ((mb_strlen($m[1]) % 2) == 0) //non even slashes
break;
}
else
{
break;
}
}
}
}
elseif ($a[$i] == '"' && $bPHP)
{
while ((++$i) < $c)
{
if ($a[$i] === '"')
{
if (preg_match('/(\\+)$/', $a[$i - 1], $m))
{
if ((mb_strlen($m[1]) % 2) == 0) //non even slashes
break;
}
else
break;
}
}
}
elseif ($a[$i] == '//' && $bPHP)
{
//single line comment
while ((++$i) < $c)
{
if ($a[$i] === "n" || $a[$i] === '?>')
break;
}
continue;
}
elseif ($a[$i] === '/*' && $bPHP)
{
while ((++$i) < $c)
{
if ($a[$i] === '*/')
break;
}
continue;
}
elseif ($a[$i] === '' && !$bPHP) //start of php
{
$bPHP = true;
$i++;
continue;
}
elseif ($a[$i] === '?>' && $bPHP) //end of php
{
$bPHP = false;
$i++;
continue;
}
if (!$bPHP)
$res .= $a[$i];
$i++;
}
return $res;
}