Text bestand inlezen vanuit andere file

Status
Niet open voor verdere reacties.

GhostRider123

Gebruiker
Lid geworden
27 sep 2016
Berichten
8
Hey!

Ik moet een text file van de ene naar de andere file zenden en uitlezen en dan printen als een Array
Alleen ik kom er maar niet achter hoe dat moet of wat ik fout doe.


File ABC.php
Code:
class A
{

    public function __construct() {
             
            }
    public function GeefFile(){
    $delijst= explode("\n", file_get_contents('abc.txt'));

    }


Code:
    include "ABC.php";

  $words = new A();

    $words = $words->GeefFile(); 

print_r($words);

Thanks in advanced :)
 
Heb je wat aan file() ?
 
Bedankt voor de hulp alvast ik snap het alleen nog niet. Heb je misschien nog een tip?

Ik weet programmeren is trial and error maar ik krijg nu zowat een error in me brein :shocked:
 
Ja die heb ik bekeken maar ik kom er gewoon niet meer uit. Waarschijnlijk staar ik me blind op 1 klein dingetje dat ik fout doe wat ik niet meer zie.
 
Waar kom je dan niet uit?
 
je kan volgende bekijken

PHP:
<?php
/**
 * @copyright 2009
 * @CMS autosite
 */
namespace data;
class File_of{
    private $filelocation;
    protected $file;
    public function __construct($pathname,$filelocation){
        if($pathname!=""){
            $this->filelocation=realpath($pathname).$filelocation ;
        }else{
            $this->filelocation=$filelocation ;
        }
		
	}
    protected function open($mode='a+'){
        $this->test();
		return($this->is_readytouse()&& $this->file = fopen($this->filelocation,$mode));
	}
    public function is_readytouse(){// TE LEZEN ALS READY TO USE
		return(isset($this->filelocation)&& is_file($this->filelocation));
	}
    public function test(){
        print $this->filelocation;
        print "isset".(isset($this->filelocation)?"[OK]":"[NOK]");
        print "isfile".(is_file($this->filelocation)?"[OK]":"[NOK]");
        print "isreadytouse".($this->is_readytouse()?"[OK]":"[NOK]");
    }
    public function viewFiledata(){
        $return ="" ;
        if($this->open('r')){
            while (!feof($this->file)){
    	    	$return.= fgets($this->file, 4096);
    		}
        }else{
            print "none";
        }
        return $return;
    }
    public function viewFileAs($templateLocation,$templateName,&$view,$delemiter=null,$list=null){
        //deze is overbodig
   }
   private function log($e,$from='File_of',$line){
        print '<div class="xdebug-error">'.$sql.''.__file__.' : LineNr'.$line.'';
        DEBUG::printERR_B($e);
        print '</div>';
        $msg = 'on: '.date('M j Y - G:i:s').',model '.__file__.' :'.$from.' except:'.$e.PHP_EOL;
        //file_put_contents('./log/File_of_error.log', $msg, FILE_APPEND);  // overbodig   
   }
}
?>
vermoedelijk zal de structuur nog te complex zijn

PHP:
<?php
/**
 * @copyright 2009
 * @CMS autosite
 */
namespace data;
class File_of_transformer extends File_of{
    public function removelineend($newfile){
        $arr= ['/\r\n/','/\n/'];
         //$cantopen = fopen($this->filelocation,$mode);
         $return ="" ;
        if($this->open('r')){
            while (!feof($this->file)){
    	    	$buffer = fgets($this->file, 4096); 
                $return.= preg_replace($arr,'',$buffer);
    		}
        }else{
            print "none";
        }
        return $return;
    }
    public function pregsplit($regx,$needle){
        $filter = new \data\DataSplit();//bij u zal dit wijzigen naar \DataSplit als het in één file staat en je kan dit gebruiken als voorbeeld om de andere classes te implementeren.
        $return =[] ;
        if($this->open('r')){
            while (!feof($this->file)){
    	    	$buffer = fgets($this->file, 4096);
                //print $buffer."<pre>"; 
                $return[]=$filter->linespliter($buffer,$regx,$needle);
    		}
        }else{
            print "none";
        }
        return $return;
    }
}
?>
dan is er een splitter, je moet maar eens de printen weg halen als de data printen niet gewenst zijn

PHP:
<?PHP
 /**
 * @author Lieven Roegiers
 * @copyright 2007 refactor 2009
 * @CMS autosite
 * opensource http://code.google.com/p/autosite/
 */
namespace data;
class DataSplit{
	private	$LineDelimiter=',';
	public function __construct($LineDelimiter ="\n"){
	   $this->LineDelimiter = $LineDelimiter;
	}
    /**
     * DataSplit::spliter()
     * @param mixed $data .be whois.dns.be #from belgium
     * @param mixed $regx "|(\.(?<ext>[A-Z\.a-z]+))( +(?<url>[A-Z\.a-z]+))( #+(?<comment>.*))?\n?|"
     * @param mixed $needle ['ext','url','comment']
     * @return
     */
    public function spliter(&$data,$regx,$needle){
        $array=[];
        
        preg_match_all($regx,$data,$result,PREG_PATTERN_ORDER);
        print "<br>".$regx.print_r($result,true);
        if(isset($result)&& key_exists($needle[0],$result)){
            foreach($result[$needle[0]] as $key => $item){
                $line = [];
                foreach($needle as $item){
                    if (!empty($result[$item][$key]))
                    $line[$item] = $result[$item][$key];
                }
                $array[$key]=$line;
            }
            
        }else{
            //print "<br>".print_r($result,true);
        }
        return $array;
    }
    public function linespliter(&$data,$regx,$needle){//hier word lijn per lijn naar toe gestuurd
        $array=[];
        preg_match($regx,$data,$result);
        if(isset($result)&& key_exists($needle[0],$result)){
            foreach($needle as $need){
                if(key_exists($need,$result)){
                    $array[$need] = $result[$need];
                }
            }
        }
        return $array;
    }	 	
}
?>
 
Laatst bewerkt:
Ik zal mijn vraag op een andere manier neerzetten ik denk dat ik hem een beetje raar heb neergezet @kenikavanbis bedankt voor de reactie maar ik ben niet zo goed in programeren dat ik dat kan lezen en alles er uit kan halen wat ik nodig heb. Daar heb ik de ervaring nog niet voor.

Vraag op een andere manier geformuleerd:
Ik probeer doormiddel van file ABC.php de abc.txt uit te lezen en in de variable $delijst de plaatsen en deze dan in DEF.php op te vragen en in een array te plaatsen en deze dan uit te printen per regel.

File: ABC.php
Code:
class A
{

    public function __construct() {
             
            }
    public function GeefFile(){
    $delijst= explode("\n", file_get_contents('abc.txt'));

    }
DEF.php
Code:
   include "ABC.php";

  $words = new A();

    $words = $words->GeefFile(); 

print_r($words);
 
Ik denk dat Kenikavanbis jouw probleem wil oplossen door met een kanon op een mug te schieten. Dat kan veel simpeler.

Je kan array uit $delijst vervolgens opslaan in de $this-> scope zodat je hem verder in je class kan gebruiken, in bijvoorbeeld een andere object.
Een mooie tutorial over OOP vind je hier: http://www.phptuts.nl/view/45/1/
 
Ok ik ben er achter waarom hij het niet deed. Ik was de return statement vergeten Yeay LOL Thanks lads! <3

Dat koste me 4 uur LOL jeetje ik neem een break.
 
Ik denk dat Kenikavanbis jouw probleem wil oplossen door met een kanon op een mug te schieten. Dat kan veel simpeler.

Je kan array uit $delijst vervolgens opslaan in de $this-> scope zodat je hem verder in je class kan gebruiken, in bijvoorbeeld een andere object.
Een mooie tutorial over OOP vind je hier: http://www.phptuts.nl/view/45/1/

Sorry ik sta er soms niet bij stil omdat ik dergelijke scripts gebruik om overal in de cms te gebuiken en __autoload() is toch mooi é

goed dat het simpeler kon maar ik ga de code niet weghalen als het nog iemand kan dienen het is toch veroudert.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan