PHP:从字符串中删除一行

时间:2012-03-23 11:12:33

标签: php string line

我有一个svg文件,如果x和y值相同,我想删除点。
例如:<path d='M2.38922,-128.262 2.38922,-128.262' stroke='#ffff33' />

这是我到目前为止的尝试:

$file = file_get_contents("../maps/test.svg");
foreach(preg_split("/(\r?\n)/", $file) as $line)
{
    if(strpos($line, ' d=') !== false)
    {
        $space = explode(" ",$line);
        $space = str_replace("d='M","",$space);
        $space = str_replace("'","",$space);

        echo "|$space[1]| => ";
        echo "|$space[2]|";
        if($space[1] == $space[2])
        {
            echo "    X delete duplicate<br>";
            unset($line);                 //<-- does not work!
        }
        else
            echo "    O keep<br>";
    }
}

以下是运行代码的页面:http://176.9.218.179/livemap/livemap.php
它可以正确找到它们,但不会删除它们 我如何从字符串中取消这些行? (“删除重复”用于调试目的,也不实际打印)

PS:如何编写此代码以尽可能高效? (可能会跑几百次)

1 个答案:

答案 0 :(得分:1)

试试这个:

$file = file_get_contents("../maps/test.svg");
$good = array();
foreach(preg_split("/(\r?\n)/", $file) as $line)
{
    if(strpos($line, ' d=') !== false)
    {
        $space = explode(" ",$line);
        $space = str_replace("d='M","",$space);
        $space = str_replace("'","",$space);

        echo "|$space[1]| => ";
        echo "|$space[2]|";
        if($space[1] != $space[2])
        {
            $good[] = $line;
        }
    }
}
// $good now holds good lines, feel free to write them into file or output