Kom ihåg mig?
Home Menu

Menu


Printa ut alla rader med strängen 'Johanna' [PHP]

 
Ämnesverktyg Visningsalternativ
Oläst 2010-02-28, 13:30 #1
addiction1 addiction1 är inte uppkopplad
Medlem
 
Reg.datum: Jan 2010
Inlägg: 209
addiction1 addiction1 är inte uppkopplad
Medlem
 
Reg.datum: Jan 2010
Inlägg: 209
Standard Printa ut alla rader med strängen 'Johanna' [PHP]

Hej allesammans,

Jag har en en textfil med en massa olika namn, ett namn på varje rad såhär:

Johanna Lindblom
Sandra Grankvist
Svensson Johanna

Min fråga är hur jag t.ex. söker efter alla "Johanna" i denna textfil med PHP och hämtar ut alla rader som innehåller Johanna?

Senast redigerad av addiction1 den 2010-02-28 klockan 13:40
addiction1 är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-02-28, 13:56 #2
1infiniteloops avatar
1infiniteloop 1infiniteloop är inte uppkopplad
Nykomling
 
Reg.datum: Jul 2009
Inlägg: 43
1infiniteloop 1infiniteloop är inte uppkopplad
Nykomling
1infiniteloops avatar
 
Reg.datum: Jul 2009
Inlägg: 43
Har du tillgång till en databas? Skulle isf läsa in alla namn i det och sen
blir det mycket enkelt att söka därifrån. Ändras inte textfilen ofta så
lär det bli stor prestandaskillnad också än att läsa från textfilen.
1infiniteloop är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-02-28, 15:37 #3
addiction1 addiction1 är inte uppkopplad
Medlem
 
Reg.datum: Jan 2010
Inlägg: 209
addiction1 addiction1 är inte uppkopplad
Medlem
 
Reg.datum: Jan 2010
Inlägg: 209
Tack för ditt snabba svar 1infiniteloop. Då har jag ett nytt problem:

PHP-kod:
$string '
Alice Agnes
Maja Alexandra
Ella Alice
Emma Alicia
Elsa Alma
Alva Alva
Julia Amanda
Linnea Anna
Wilma Astrid
Ebba  Cornelia
Molly Ebba
Nellie Edith
Klara  Elin
Agnes Elina
Ida  Elise
Elin Ella
Olivia Ellen
Emilia Ellie
Isabelle Elsa
Amanda Elvira
Saga Emelie
Moa Emilia
Ellen Emma
Alma Emmy
Matilda Ester
Hanna Evelina
Nova  Fanny
Sara Felicia
Alicia Filippa
Felicia Freja
Stella Frida
Tuva  Greta
Astrid Hanna
Isabella Hedda
Meja Hilda
Selma Ida
Thea Inez
Elvira Ingrid
Lilly Iris
Lovisa Isabella
Tindra Isabelle
Lova Jasmine
Nora Johanna
Sofia Joline
Ester Josefin
Nathalie Julia
Vera Kajsa
Tilde Klara
Tyra Lea
Emelie Leia
Filippa Lilly
Freja Lina
Signe Linn
Tilda Linnea
Siri Lisa
Lea Liv
Stina Livia
Cornelia Lova
Inez Lovisa
Edith Maja
Linn Malva
Mira Maria
Jasmine Matilda
Liv Meja
Leia Melissa
Emmy Mira
Frida Miranda
Lisa Moa
Ellie Molly
Josefin My
Svea Märta
Rebecka Nathalie
Evelina Nellie
Ronja Nicole
Kajsa Nora
Anna Nova
Joline Olivia
Elina Rebecka
Elise Ronja
Märta Rut
Lina Saga
Hilda Sara
Iris Selma
Ingrid Signe
Melissa Siri
Livia Sofia
Vilda Sofie
My Stella
Sofie Stina
Malva Svea
Nicole Thea
Victoria Tilda
Fanny Tilde
Greta Tindra
Hedda Tuva
Alexandra Tyra
Maria Vera
Rut Victoria
Miranda Vilda
Johanna Wilma'

Hur ska jag på enklast sätt få ut varje namn utan mellanslag i en array. Så att det blir [0] = Alice, [1] = Agnes etc etc.

Jag har testat med:
PHP-kod:
$pieces explode(" "$string); 
Men det ger följande resultat:

Kod:
Array
(
    [0] => 
Alice
    [1] => Agnes
Maja
    [2] => Alexandra
Ella
    [3] => Alice
Emma
    [4] => Alicia
Elsa
    [5] => Alma
Alva
    [6] => Alva
Julia
    [7] => Amanda
Linnea
    [8] => Anna
Wilma
Vilket inte blir helt rätt.

Tack på förhand.

Senast redigerad av addiction1 den 2010-02-28 klockan 15:41
addiction1 är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-02-28, 15:54 #4
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
Du måste ta hänsyn till radbrytningarna också.
__________________
Full-stack developer, free for smaller assignments
tartareandesire är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-02-28, 15:59 #5
addiction1 addiction1 är inte uppkopplad
Medlem
 
Reg.datum: Jan 2010
Inlägg: 209
addiction1 addiction1 är inte uppkopplad
Medlem
 
Reg.datum: Jan 2010
Inlägg: 209
Citat:
Ursprungligen postat av tartareandesire Visa inlägg
Du måste ta hänsyn till radbrytningarna också.
Vet inte riktigt hur du menar, men jag la till \n\r i explode:n och då fick jag detta resultatet istället:

Kod:
Array ( [0] => Alice Agnes Maja Alexandra Ella Alice Emma Alicia Elsa etc )
addiction1 är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-02-28, 16:05 #6
Westmans avatar
Westman Westman är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Jun 2004
Inlägg: 4 021
Westman Westman är inte uppkopplad
Klarade millennium-buggen
Westmans avatar
 
Reg.datum: Jun 2004
Inlägg: 4 021
Gör en replace och byt ut alla radbrytningar till mellanslag först och sen explodera den med mellanslag kanske?
Westman är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-02-28, 17:02 #7
Jimpsson Jimpsson är inte uppkopplad
Flitig postare
 
Reg.datum: Jun 2006
Inlägg: 428
Jimpsson Jimpsson är inte uppkopplad
Flitig postare
 
Reg.datum: Jun 2006
Inlägg: 428
Skrev ihop något..
Scriptet kollar om söksträngen matchar för- och efternamn.

Kod:
<?php
	
	$file		= 'file.txt';
	$search	= 'Johanna';
	
	/* --------------------- */
	
	$fp			= @fopen($file, 'r') or die('Filen kunde inte läsas in');
	$contents		= NULL;
	$result		= array();
	
	if(is_resource($fp)){
		
		while( ! feof($fp)) {
			$contents .= fgets($fp);
		}
	
		$lines = explode("\n", $contents);
		
		for($i = 0; $i < count($lines); $i++){
			
			$person = explode(' ', $lines[$i]);
			
			if((stripos($person[0], $search) !== FALSE) OR (stripos($person[1], $search) !== FALSE)){
				echo $lines[$i] . '<br />' . PHP_EOL;
			}
			
		}
	
	} else {
		
		echo 'Något gick snett..';
		
	}
Jimpsson är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-02-28, 23:38 #8
objx objx är inte uppkopplad
Medlem
 
Reg.datum: Mar 2008
Inlägg: 154
objx objx är inte uppkopplad
Medlem
 
Reg.datum: Mar 2008
Inlägg: 154
Jag skulle föredra denna funktion:
http://se2.php.net/manual/en/function.file.php

Alltså:

$lines = file("lista.txt");

foreach ($lines as $line_num => $line) {

if(strpos(strtolower($line),"johanna") !== false){
print "Namnet Johanna förekom på rad $line_num<br />";
}
}
objx är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-03-01, 09:13 #9
Magnus_A Magnus_A är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: May 2006
Inlägg: 2 604
Magnus_A Magnus_A är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: May 2006
Inlägg: 2 604
Problemet blir då att hitta Johan men inte Johanna.
Magnus_A är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-03-02, 12:58 #10
iXam iXam är inte uppkopplad
Medlem
 
Reg.datum: Aug 2005
Inlägg: 219
iXam iXam är inte uppkopplad
Medlem
 
Reg.datum: Aug 2005
Inlägg: 219
Citat:
Ursprungligen postat av objx Visa inlägg
Jag skulle föredra denna funktion:
http://se2.php.net/manual/en/function.file.php

Alltså:

$lines = file("lista.txt");

foreach ($lines as $line_num => $line) {

if(strpos(strtolower($line),"johanna") !== false){
print "Namnet Johanna förekom på rad $line_num<br />";
}
}
Otestat :
Kod:
$lines = file("lista.txt");

foreach ($lines as $line_num => $line) {

  if(preg_match('/^johanna$/sim', $line)){
     print "Namnet Johanna förekom på rad $line_num<br />";
  }
}
iXam är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 09:28.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017