1

我发现这篇文章,最佳答案 ( /\G {2}/) 适用于一行,但我无法让它在多行中工作。

它需要将 2 个空格转换为制表符,但仅限于行首。这是一个例子: http: //pastebin.com/4LQ3FUA

任何帮助将不胜感激,得到一个完整的项目来转换......

4

2 回答 2

2

您的解决方案可能更好,但这是一个纯正则表达式版本:

$result = preg_replace('/(?:\G|^) {2}/m', "\t", $subject);

^在多行模式下,允许它匹配行中的第一对空格,然后将该行中的\G任何后续匹配链接到第一个空格。

于 2013-07-01T11:24:36.397 回答
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));
}
?>
于 2013-07-01T09:30:07.283 回答