2014-05-12 162 views
0

我試圖將請求的字符串保存到文本文件。 如果文件中存在字符串,則返回消息,否則保存字符串並返回ok消息。 以下是我所做的和它的不工作。我在當前目錄中沒有任何文件。php將字符串保存到文件

<?php 

$data=$_REQUEST["data"]; 

function registration($dat) 
{ 
$file = 'data.txt'; 
if(strpos(file_get_contents($file),$_GET[$dat]) !== false) { 
$current = file_get_contents($file); 
$current .= $dat; 
file_put_contents($file, $current);  
$result.='Data Added ok!!'; 
return $result; 
} else { 
$result.='Data Already Saved'; 
return $result; 
} 
} 

echo registration($data); 

?> 

回答

1

試一下這個 修訂 ::添加一個新行每次保存:

$data=((string)$_REQUEST["data"]); 
    echo registration($data); 
    function registration($dat,$file = 'data.txt') 
    { 
    $result=''; 
    $fileContent=file_get_contents($file); 
    if(strpos($fileContent,$dat) === false) { 
    $current = $fileContent; 
    $current .= "\r\n".$dat; 
    file_put_contents($file, $current);  
    $result.='Data Added ok!!'; 

    } else { 
    $result.='Data Already Saved'; 

    } 
    return $result; 
} 
+0

工作(是) 只有一個quesion如何添加linebreak後保存數據 – dudey

+1

檢查更新的答案 – laurent

0

你在這裏混合$ _GET和$ _REQUEST變量。它應該工作你的情況:

<?php 

$data=$_REQUEST["data"]; 

function registration($data) 
{ 
$file = 'data.txt'; 
$content = file_get_contents($file); 

mb_internal_encoding('UTF-8'); 
if(mb_strpos($content, $data) !== false) { 

file_put_contents($file, $content.$data);  
$result ='Data Added ok!!'; 
return $result; 
} else { 
$result ='Data Already Saved'; 
return $result; 
} 
} 

echo registration($data); 

?> 
0

在同一目錄下創建名爲data.txt一個空文件,並將該文件到+w的更改權限,並檢查您的if語句。

1

您可能犯了一個錯誤。什麼是$ dat?

$current .= $dat; 

另外我對使用!==有疑惑,爲什麼不簡單!=?

+0

因爲當它發現在字符串開頭的搜索,這將被評估爲假,因爲strpos可能返回0/* if(0){} */ http://www.php.net/manual/en/language.operators.comparison.php – laurent

+0

哈,是的。當然我應該閱讀手冊。感謝upvoting我的回答:) – vdolez

+0

不要擔心歡迎:) – laurent