FAQ |
Kalender |
![]() |
#1 | ||
|
|||
Medlem
|
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 |
||
![]() |
![]() |
![]() |
#2 | |||
|
||||
Nykomling
|
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. |
|||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Medlem
|
Tack för ditt snabba svar 1infiniteloop. Då har jag ett nytt problem:
PHP-kod:
Jag har testat med: PHP-kod:
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 Tack på förhand. Senast redigerad av addiction1 den 2010-02-28 klockan 15:41 |
||
![]() |
![]() |
![]() |
#4 | ||
|
|||
Supermoderator
|
Du måste ta hänsyn till radbrytningarna också.
__________________
Full-stack developer, free for smaller assignments |
||
![]() |
![]() |
![]() |
#5 | ||
|
|||
Medlem
|
|||
![]() |
![]() |
![]() |
#6 | |||
|
||||
Klarade millennium-buggen
|
Gör en replace och byt ut alla radbrytningar till mellanslag först och sen explodera den med mellanslag kanske?
|
|||
![]() |
![]() |
![]() |
#7 | ||
|
|||
Flitig postare
|
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..'; } |
||
![]() |
![]() |
![]() |
#8 | ||
|
|||
Medlem
|
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 />"; } } |
||
![]() |
![]() |
![]() |
#9 | ||
|
|||
Klarade millennium-buggen
|
Problemet blir då att hitta Johan men inte Johanna.
|
||
![]() |
![]() |
![]() |
#10 | ||
|
|||
Medlem
|
Citat:
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 />"; } } |
||
![]() |
![]() |
Svara |
|
|