2012-12-21 26 views
0

我得到一個user.txt文件。有所有以這種格式保存的用戶:通過文本文件搜索字符串

Vorname: Michael | Nachname : Schmidt | Username: DarkDecipio | Passwort: 3609e297fb0b6fb1105cba71d5c024b3 
Vorname: John | Nachname : Doe | Username: Dummy | Passwort: d78c03d72e72b44a131d255aec3c8a11 

現在,當新的用戶發送一個登記表到PHP文件,我想看看,如果用戶名已被使用。 所以我必須搜索所有用戶名,如果有發送用戶名。但我不能用strstr()或類似的東西來做,因爲Prename(Vorname)或Surname(Nachname)可以像用戶名一樣。或用戶名可以包括sended用戶名的一部分...

希望你明白。
注:我知道這是一個醜陋的解決方案,以節省用戶在一個文本文件,但這是我校的一個項目,我們必須使用TEXTFILES ...

+0

您可以將用戶數據保存爲JSON嗎? –

+0

我們必須使用文本文件。對於所有的保存事物,我們必須使用文本文件:/ –

+1

爲什麼不在存儲時使用序列化數組,然後當檢索它時,可以反序列化並像數組一樣對待它,然後在數組中搜索就像if in_array($ username,$ array_from_file)) – Rob

回答

1

關閉我的頭頂,我能想到的兩個選項。假設$行是在文件的當前行,你正在尋找「DarkDecipio」:

首先,使用正則表達式,以確保您拿起您想要的部分:

if (preg_match('/Username:\s*DarkDecipio/', $line)) { 
    echo 'Match'; 
} 

二,拆分由|行然後在每個數組的第三項上使用strstr:

$items = explode('|', $line); 
if (strstr($items[2], 'DarkDecipio')) { 
    echo 'Match'; 
} 
+0

我也想到了正則表達式。但我怎麼能意識到這一點?我用正則表達式搜索(\'用戶名:+發送用戶名'\)? 但我無法理解你的第二個解決方案 –

+0

我將編輯答案。 – RonaldBarzell

+0

好吧,我想我帶你的第一個解決方案。但是有兩個問題:1.什麼意思是\ *?我不熟悉正則表達式。 2.爲什麼你用1來解決它?我認爲pre_match是一個布爾值? –