2012-03-23 9 views
0

xとyの値が同じ場合、ポイントを削除したいsvgファイルがあります。たとえば
<path d='M2.38922,-128.262 2.38922,-128.262' stroke='#ffff33' />PHP:文字列から行を削除する

これは、これまでの私の試みです:http://176.9.218.179/livemap/livemap.php
それが適切にそれらを見つけたが、行を削除しません。ここで

$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>"; 
    } 
} 

は、コードを実行しているページがあります。
文字列からこれらの行をどのように解除するのですか? ( "delete dup"はデバッグ目的であり、実際には印刷されません)

PS:このコードはどのようにしてできるだけ効率的に書かれますか? (数百回実行される可能性があります)

+1

を。 foreachの各繰り返しで、$行は適切なデータのCOPYで作成されます。設定を解除する必要はありません。あなたは良いデータを収集し、その上にファイルを上書きする(または新しいファイルを作成する)ことを望みます。 – Endijs

+0

@Endijsどの変数を設定解除する必要がありますか?あるいは、ファイル全体を省略したデータで新しい変数にコピーする必要がありますか? – dukevin

+0

コードが追加されました。それが問題を解決するかどうかを確認してください。 – Endijs

答えて

1

この試してみてください:あなたはコンテンツそのものをファイルに変更をしていない、単純な変数をunsetingている

$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 
+0

foreachで設定してから上書きしないと、1文字になることはありますか?どの瞬間にそれが1人のキャラクターになるのですか? – Endijs

+0

、私はばかです。ありがとうございました – dukevin

関連する問題