我发现this post,最佳答案(/\G {2}/
)适用于一行,但我不能让它在多行工作。
它需要将2个空格转换为制表符,但仅限于行的开头。这是一个例子:http://pastebin.com/4LQ3FUAs
任何帮助将不胜感激,有一个完整的项目转换...
答案 0 :(得分:2)
您的解决方案可能更好,但这是纯正的正则表达式版本:
$result = preg_replace('/(?:\G|^) {2}/m', "\t", $subject);
多行模式下的 ^
允许它匹配行中的第一对空格,然后\G
将该行中的任何后续匹配链接到第一行。
答案 1 :(得分:0)
我找不到一个可以在整个文件上使用的正则表达式,所以我创建了一个小脚本来递归遍历目录并单独更改每个php / js / css文件的每一行,运行但速度很快。只需cd到您的目录并运行脚本。
<?php
$dir = getcwd();
$it = new RecursiveDirectoryIterator($dir);
$ii = new RecursiveIteratorIterator($it);
$files = new RegexIterator($ii, '#^(?:[A-Z]:)?(?:/(?!\.Trash)[^/]+)+/[^/]+\.(?:php|css|js)$#Di');
foreach ($files as $file)
{
$name = $file->getPath().'/'.$file->getFileName();
echo $name."\n";
$lines = file($file->getPath().'/'.$file->getFileName());
$length = count($lines);
for ($i = 0; $i < $length; ++$i)
{
$lines[$i] = preg_replace('/\G {2}/', "\t", $lines[$i]);
}
file_put_contents($name, implode('', $lines));
}
?>