2012-10-04 1 views
1

J'ai un fichier qui ressemble à ceci.PHP Supprimer une ligne contenant une chaîne d'un fichier texte

Kate 
Johnny 
Bill 
Kermit 

Je veux être en mesure de mettre, par exemple, « Bill » dans une chaîne, et enlever « Bill », ou tout ce qui est dans la variable, et la suite « \ r \ n » du fichier . La variable contiendra toujours quelque chose qui est déjà dans le fichier, il n'y aura pas "George" s'il n'y a pas de George.
Ce code vérifie si "Bill" est dans le fichier.

$fileContents = file_get_contents("names.txt"); 
if(strpos($fileContents, "Bill")) 
{ 
    //Bill is here! 
} 

Comment est-ce que j'élargirais cela pour enlever "Bill \ r \ n"? Merci d'avance!

+0

'strpos()' peut renvoyer un '0' si la position est le premier caractère de la ligne, donc votre instruction 'if' échoue. Essayez 'if (strpos ($ fileContents," Bill ")! == false) {' à la place. – newfurniturey

+0

Voulez-vous dire que vous voulez supprimer la ligne de «Bill'? – xdazz

+0

c'est une nouvelle ligne char whay u voulez-vous supprimer? –

Répondre

2
$var = "Bill"; 
$input = "Kate 
Johnny 
Bill 
Kermit"; 

$output = str_replace($var ."\r\n", "", $input ."\r\n"); 
+0

Si je viens de faire '$ output = str_replace ($ var." \ R \ n "," ", $ input); 'rien ne semble se produire, mais quand j'ai fait' $ output = str_replace ($ var. "\ r \ n", "", $ input. "\ r \ n"); ', il a laissé une ligne vide. J'ai ajouté '$ newFile = substr ($ newFile, 0, -2); // Supprime newline char' et maintenant ça fonctionne parfaitement. Merci! – Andrey

+0

Ah, bien. Vous pouvez également faire un trim() pour supprimer les espaces de fin et de début. J'ai ajouté un \ n \ n de sorte qu'il ne manquerait pas de supprimer la dernière ligne. –

+0

Je vais le remplacer par une garniture, juste au cas où. Cela semble être une meilleure option. – Andrey

0
while(!feof($file)){ 
    $stringData = fgets($file);//read a line on every itration 

if (strpos($stringData , "Bill") !== false) { 
//do somting 
} 

} 
1
  • Vous pouvez utiliser trim pour supprimer tous les espaces blancs
  • file peut lire tout le contenu sous forme de tableau
  • Vous pouvez utiliser array_map pour appliquer la garniture à tout le contenu du tableau
  • Vous pouvez utiliser in_array pour vérifier l'élément d'un tableau

Exemple

$fileContents = array_map("trim",file("hi.test")); 
var_dump($fileContents); 

Sortie

array 
    0 => string 'Kate' (length=4) 
    1 => string 'Johnny' (length=6) 
    2 => string 'Bill' (length=4) 
    3 => string 'Kermit' (length=6) 

Pour vérifier si le projet de loi est-il

if(in_array("Bill", $fileContents)) 
{ 
    //Bill is here 
} 
Questions connexes