我有一个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:如何编写此代码以尽可能高效? (可能会跑几百次)
答案 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