Показать сообщение отдельно
  #2  
Старый 07.12.2012, 09:00
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

поидее если есть код тестов, которые оба они проходят то тот который короче или проще,
а если в общем, то первый зависает если найдёт закрывающий тэг до открывающего, ещё бывает js в событиях всяких onevent

можно ещё сделать посимвольно:
Код:
function here(substr,instr:string; atpos:integer):boolean;
var i:integer;
begin
  result := false;
  if length(instr) < atpos+length(substr)-1 then exit; //на всякий

  for i := 1 to length(substr) do
    if instr[atpos+i - 1] <> substr[i] then exit;

  result := true;
end;

function hereAtleft(substr,instr:string; atpos:integer):boolean;
begin
  result := here(substr,instr,atpos - length(substr));
end;

function DelJS(const inCode:string):string;
const OPENTAG = '<script'; CLOSETAG = '</script>';
var i:integer; script:boolean;
begin
  result := '';
  script := false;

  for i := 1 to length(incode) do begin
    if here(OPENTAG,incode,i) then script := true
    else if hereAtleft(CLOSETAG,incode,i) then script := false;

    if not script then result := result + incode[i];
  end
end; 
{
кстати из <<script></script>script>123</script> делает <script>123</script>
поэтому для удовлетворения паранои можно ещё в цикле запускать
}
__________________
>woweook<
Ответить с цитированием