PHP: удалить строку из строки - PullRequest
0 голосов
/ 23 марта 2012

У меня есть файл 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
Он правильно находит их, но не удаляет строки.
Как бы я удалил эти строки из строки? («delete dup» используется для отладки, на самом деле не распечатывается)

PS: Как этот код может быть написан так, чтобы быть максимально эффективным? (может быть запущен несколько сотен раз)

1 Ответ

1 голос
/ 23 марта 2012

Попробуйте это:

$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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...