Regel verwijderen

Status
Niet open voor verdere reacties.

reijm1

Gebruiker
Lid geworden
6 jun 2007
Berichten
6
Hallo allemaal,

Ik heb een vraag.

Ik heb een reporting tool en die maakt van csv files XLS files echter ik lees de csv in met php en ik wil een regel verwijderen waar een specifiek woord in voorkomt hoe doe ik dat?

Zie onderstaande code dit gebruik ik om de file in te lezen etc. en de onderste regel gebruik ik om een string te hernoemen.
Maar ik wil weten of het mogelijk is om in een regel een stuk text te zoeken en wanneer hij dit dan vind dat hij de hele regel verwijderd.


PHP:
			// Lees de content van het bestand in een variable
			$new_file_handle = fopen('c:\Intranet\components\reporting\files\Retailer\\' .$file_new, 'r');
			$contents = fread ($new_file_handle, filesize ('c:\ Intranet\components\reporting\files\Retailer\\' .$file_new));
			fclose ($new_file_handle);

			// Controleer op CMD_process is het bestand, excel kan daar niet mee overweg
			$contents = str_replace("CMD_process", "Error01 ", $contents);
Nu hernoem ik CMD_process maar ik wil graag dat regel waar dit woord in voorkomt geheel wordt verwijderd.

Ik hoor graag van iemand.
Alvast bedankt.
 
Laatst bewerkt:
je zou een regular expression kunnen gebruiken, en dan de hele regel vervangen door niets.

PHP:
// Controleer op CMD_process is het bestand, excel kan daar niet mee overweg
$contents = preg_replace("/^.*?CMD_process.*?$/", "", $contents);

die regexp zou moeten vertalen naar "begin van de regel, wat karakters, het woord CMD_PROCESS, nog wat karakters, het eind van de regel."

Test em wel even. met regexps maak je nogal snel fouten.
 
Dank

Hoi...

Bedankt ik ga het even testen.


Update:

Ik heb het getest, alleen het werkt inderdaad niet helemaal.

is er nog een andere manier op een text te doorlopen en wanneer hij een specifiek woord vind in de text dat hij de gehele regel verwijderd.?

groet,
 
Laatst bewerkt:
Je kan niet zomaar een regel verwijderen, je moet dan het gehele bestand herschrijven.

Je zou een while loopje kunnen maken die regel per regel controleerd of dat woord er in staat en op basis daarvan de regel naar het doel bestand schrijft of niet.
 
nouja, $contents is een gewone string toch? daar zou je gewoon een regeltje uit moeten kunnen weghalen.

Dit stukje code moet in ieder geval werken:

PHP:
$filename = 'c:\Intranet\components\reporting\files\Retailer\\' .$file_new
$contents = ""

foreach (file($filename) as $line) {
    if strstr($line, "CMD_process") continue;

    $contents .= $line;
}

# $contents is nu een string die het hele bestand bevat behalve die regels waar
# "CMD_process" in staat

Als je PHP5 hebt kun je ook strpos($line, "CMD_process") gebruiken in plaats van strstr, die functie is wat sneller
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan