我正在尝试打开一个文件并将每一行与一个字符串进行比较以查看它们是否相同,但它不起作用,这是代码。
$toSearch="moizhusnain@hotmail.com";
$textData=array();
$fla=FALSE;
$file=fopen('text.txt','r') or die('Unable to open file.');
while(!feof($file))
{
$textData[]=fgets($file);
}
fclose($file);
for($i=0;$i<count($textData);$i++)
{
echo $textData[$i]."<br/>";
if (strcmp($toSearch,$textData[$i])==0)
{
echo "Yes";
}
}
答案 0 :(得分:3)
答案 1 :(得分:1)
我假设的以及您需要做的代码如下: -
假设:-(您的文本文件看起来像这样)
moizhusnain@hotmail.com
dfgfdgmoizhusnain111@hotmail.com
moidgdfdffdgzhusnain@hotmail.com
moizdsfdsfdsdfhusnain@hotmail.com
所以代码应该是: -
<?php
error_reporting(E_ALL);
ini_set('display_errors',1);
$toSearch="moizhusnain@hotmail.com";
$textData = file('text.txt',FILE_IGNORE_NEW_LINES); // use file() function with ignoring new lines of your text file
echo "<pre/>";print_r($textData); // print array
foreach($textData as $textDat){ // use foreach() rather than for() loop
if ($toSearch == $textDat){
echo "Yes";
}
}
?>
参考: -
http://php.net/manual/en/function.file.php
注意: - 如果这对你有用,那只是意味着你的文本文件的新行限制你的代码工作,实际上不需要strcmp()
。
答案 2 :(得分:0)
虽然jonju已经制作了一个使用其他方法修复问题的工作示例,但只需使用此RegEx(stolen from here)
就可以使用现有代码修复它for i,id_d1 in enumerate(d1['id']):
d_4['id'].append(id_d1)
d_4['value_1'].append(d1['value_1'][i])
if id_d1 in d2['id']:
for j,id_d2 in enumerate(d2['id']):
if id_d1==id_d2:
d_4['value_2'].append(d2['value_2'][j])
else:
d_4['value_2'].append('----')
if id_d1 in d3['id']:
for k,id_d3 in enumerate(d3['id']):
if id_d1==id_d3:
d_4['value_3'].append(d3['value_3'][j])
else:
d_4['value_3'].append('----')
以下代码有效:
$string = trim(preg_replace('/\s\s+/', ' ', $string));