0

I have this php code saved in text file, I want to convert this text file to Unix line endings. How?

 <?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();
?>
peterh
  • 11,875
  • 18
  • 85
  • 108
Adham
  • 63,550
  • 98
  • 229
  • 344
  • Sorry if I'm making an obvious comment but almost all decent editors and IDEs allow you to choose the line feed style and change it on the fly. You don't need external tools if you just want to change *one* file. – Álvaro González Aug 03 '11 at 11:05

4 Answers4

5

There is a utility for this:

dos2unix -o $output_file $input_file

Check the man pages for more options.

There are other clever sed hacks too, but better use a tried and tested utility than hacking with sed, which one may not know that well.

peterh
  • 11,875
  • 18
  • 85
  • 108
wadkar
  • 960
  • 2
  • 15
  • 29
  • if RHEL/CentOS/Fedora, do yum install dos2unix. if debian based (ubuntu etc.) do sudo apt-get install dos2unix. Its a very basic utility, almost all distributions either come installed with it or have it in their repository. – wadkar Aug 03 '11 at 10:45
  • from where can I get this utility, I'm Windows user ! – Adham Aug 03 '11 at 10:46
3

Something like:

<?php
$file = file_get_contents("file.php");
$file = str_replace("\r", "", $file);
file_put_contents("file.php", $file);

=)

EDIT 1

If you are on Linux - there is the good editor named Kate (converts encoding and line-end)

Josh
  • 1,794
  • 3
  • 17
  • 31
Subdigger
  • 2,166
  • 3
  • 20
  • 42
1

on *nix, without installing anything:

cat yourFile | tr '\r\n' '\n' > newFile

then, you can test your newFile, and replace the old one if you're happy

Matt S.
  • 878
  • 10
  • 21
1

If dos2unix is not available, todos/fromdos might be:

fromdos <filename>
Oscar
  • 65
  • 6