Comment faire pour convertir les fins de ligne d'un fichier texte DOS vers Unix?
J'ai ce code php enregistré dans un fichier texte, je souhaite convertir ce fichier texte à des fins de ligne Unix. Comment?
<?php
class City
{
private $lat=0.0;
private $lng=0.0;
private $name="";
private $visited=false;
private $order=1;
function City($name,$lat,$lng)
{
$this->name=$name;
$this->lat=$lat;
$this->lng=$lng;
}
function getName()
{
return $this->name;
}
function getLat()
{
return $this->lat;
}
function getLng()
{
return $this->lng;
}
function getOrder()
{
return $this->order;
}
function getVisited()
{
return $this->visited;
}
function setVisited($value)
{
$this->visited=$value;
}
function setOrder($value)
{
$this->order=$value;
}
}
class Main
{
public $allCities=array();
private $k=1;
private $totalDistance=0;
/*class main empty constructor*/
function Main()
{}
function sortArray()
{
for($i=count($this->allCities)-1;$i>=0;$i--)
{
for($j=$i-1;$j>=0;$j--)
{
if($this->allCities[$i]->getOrder()<$this->allCities[$j]->getOrder())
{
$temp=$this->allCities[$j];
$this->allCities[$j]=$this->allCities[$i];
$this->allCities[$i]=$temp;
}
}
}
}
/* method to read from cities.txt file */
function getCitiesFromTextFile()
{
$f="cities.txt";
$fo=fopen($f,'r');
while ( $line = fgets($fo, 1000) )
{
$delimiter=" ";
$temp = explode($delimiter, $line);
$c11=new City($temp[0],$temp[1],$temp[2]);
$this->allCities[]=$c11;
}
}
/* to print the data stored in an array ( without ordering the cities ) */
function displayAllCities()
{
for($i=0;$i<count($this->allCities);$i++)
{
print $this->allCities[$i]->getName()."<br>";
}
}
function rad($x)
{
return $x*pi()/180;
//return $x;
}
/* to calculate the distance between two cities */
function calculatedistance($city1,$city2)
{
$lat1=$city1->getLat();
$lng1=$city1->getLng();
$lat2=$city2->getLat();
$lng2=$city2->getLng();
// Spherical law of cosines: d = acos(sin(lat1).sin(lat2)+cos(lat1).cos(lat2).cos(long2-long1)).R
// R=3437.74677 (nautical miles)
// R=6378.7 (kilometers)
// R=3963.0 (statute miles)
$R = 6371; //earth's mean radius in km
$dLat = $this->rad($lat2 - $lat1);
$dLng = $this->rad($lng2 - $lng1);
$a = sin($dLat/2) * sin($dLat/2) +cos($this->rad($lat1)) * cos($this->rad($lat2)) * sin($dLng/2) * sin($dLng/2);
$c = 2 * atan2(sqrt($a), sqrt(1-$a));
$d = $R * $c;
return $d;
//$distance=acos(sin($lat1)*sin($lat2)+cos($lat1)*cos($lat2).cos($lng2-$lng1))*$R;
//return $distance;
}
/* to calculate the optimal path passing all cities once time for each city */
function findPath($start)
{
for($i=0;$i<count($this->allCities);$i++)
{
if($this->k>count($this->allCities))
break;
if($this->allCities[$i]->getName()==$start &&!$this->allCities[$i]->getVisited())
{
$this->allCities[$i]->setVisited(true);
$this->allCities[$i]->setOrder($this->k);
$lower_index=0;
$lower_dis=1000000;
for($j=0;$j<count($this->allCities);$j++)
{
if(!$this->allCities[$j]->getVisited())
{
$dis=$this->calculatedistance($this->allCities[$j],$this->allCities[$i]);
if($dis<$lower_dis)
{
$lower_index=$j;
$lower_dis=$dis;
}
}
}
$this->k++;
$this->findPath($this->allCities[$lower_index]->getName());
}//enf if
}//end for
}//end function
/* method to display the total distance of the route passign all cities */
function getTotalDistance()
{
return $this->totalDistance;
}
}//end class
//$test=new City("Gaza",1.2,1.50);
$m=new Main();
$m->getCitiesFromTextFile();
//$m->displayAllCities();
$m->findPath("Beijing");
$m->sortArray();
$m->displayAllCities();
$m->getCitiesFromTextFile();
?>
- Désolé si je fais un commentaire évident, mais presque tous les honnêtes des éditeurs et des IDEs pour vous permettre de choisir la ligne d'alimentation de style et de le modifier à la volée. Vous n'avez pas besoin d'outils externes si vous souhaitez modifier un fichier.
Vous devez vous connecter pour publier un commentaire.
Quelque chose comme:
=)
EDIT 1
Si vous êtes sous Linux, il y a le bon éditeur nommé
Kate
(conversion de l'encodage et de fin de ligne)"\r\n"
. linux ="\n"
$-)Il existe un utilitaire pour cela:
Vérifier les pages de manuel pour plus d'options.
Il y a d'autres intelligent sed hacks trop, mais mieux d'utiliser un essayé et testé l'utilitaire de piratage avec sed, on ne peut pas savoir.
Si dos2unix n'est pas disponible, todos/fromdos pourrait être:
sur *nix, sans rien installer:
ensuite, vous pouvez tester votre newFile, et le remplacement de l'ancien, si vous êtes heureux