2012-02-18 2 views
1

次のコードは、HTMLファイルやPHPファイルからコメント、改行、および余分なスペースを削除しますが、元のファイルに<<<EOT;が含まれていると問題が発生します。 <<<EOT;の前後に改行を追加するために使用する正規表現ルールは$pre6ですか?文字列の前後に改行を追加する正規表現ですか?

//a bit messy, but this is the core of the program. removes whitespaces, line breaks, and comments. sometimes makes EOT error. 
$pre1 = preg_replace('#<!--[^\[<>].*?(?<!!)-->#s', '', preg_replace('~>\s+<~', '><', trim(preg_replace('/\s\s+/', ' ', php_strip_whitespace(stripslashes(htmlspecialchars($uploadfile))))))); 
$pre2 = preg_replace("/(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+/", "\n", $pre1); 
$pre3 = str_replace(array("\r\n", "\r"), "\n", $pre2); 
$pre4 = explode("\r\n", $pre3); 
$pre5 = array(); 
foreach ($pre4 as $i => $line) { 
    if(!empty($line)) 
     $pre5[] = trim($line); 
} 
$pre6 = implode($pre5); 
echo $pre6; 

答えて

1

<<<EOTに一致するように、あなたはその正確なテキストと一致する方法厳密に応じて、<{3}[A-Z]{3}、または他のいくつかのパターンを使用することができます。

ああ、あなたは今何をしているのか分かります。私はPHPでうまくいくわけではありませんが、正規表現では名前付きのグループを取得し、そのグループを置換操作で参照できます。だから、多分あなたは交換用のパラメータの後だ

$regs['Capture'] 

:私はPHPであなたのようなものを使用して、それを参照することができると思い

(?<Capture><{3}[A-Z]{3}) 

:あなたはCaptureというグループに<<<EOTをキャプチャするために、以下を使用することができます以下のようなものの価値:

"\r\n".$regs['Capture']."\r\n" 

... $regsは、置換操作に渡されたパラメータだった場合。

+0

ありがとうございます、私は正しい方向に私を入れてください。 – ionFish

関連する問題