• Модуль: 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) //end of php
		{
			$bPHP = false;
			$i++;
			continue;
		}

		if (!$bPHP)
			$res .= $a[$i];

		$i++;
	}

	return $res;
}