2014-05-12 260 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