我使用脚本从另一个关键字列表中排除单词列表。我想改变输出的格式。 (我在这个网站上找到了脚本,我做了一些修改。)
示例:
结果中的短语:我的话
我想添加引号:"我的话"
我在想我应该把结果放在new-file.txt中,之后重写它,但我不明白如何捕获结果。请,请给我一些提示。这是我的第一个剧本:)
以下是代码:
<?php
$myfile = fopen("newfile1.txt", "w") or die("Unable to open file!");
// Open a file to write the changes - test
$file = file_get_contents("test-action-write-a-doc-small.txt");
// In small.txt there are words that will be excluded from the big list
$searchstrings = file_get_contents("test-action-write-a-doc-full.txt");
// From this list the script is excluding the words that are in small.txt
$breakstrings = explode(',',$searchstrings);
foreach ($breakstrings as $values){
if(!strpos($file, $values)) {
echo $values." = Not found;\n";
}
else {
echo $values." = Found; \n";
}
}
echo "<h1>Outcome:</h1>";
foreach ($breakstrings as $values){
if(!strpos($file, $values)) {
echo $values."\n";
}
}
fwrite($myfile, $values); // write the result in newfile1.txt - test
// a loop is missing?
fclose($myfile); // close newfile1.txt - test
?>
脚本中也有一点错误。它工作正常但是在输入test-action-write-a-doc-full.txt
和test-action-write-a-doc-small.txt
中的单词列表之前我必须为第一行设置一个中断,否则它找不到第一个单词。
示例:
在test-action-write-a-doc-small.txt
字词中:
选择,lol,文件,酷,
test-action-write-a-doc-full.txt
wwords:
选择,坏,计算机,哈哈,休息,文件。
结果:
选择=未找到 - 这是错误。
如果我没有为.txt
lol =发现
file = Found
提前感谢您的帮助! :)
答案 0 :(得分:0)
您可以收集数组中接受的单词,然后将所有这些数组元素粘贴到一个文本中,然后将其写入文件。像这样:
echo "<h1>Outcome:</h1>";
// Build an array with accepted words
$keepWords = array();
foreach ($breakstrings as $values){
// remove white space surrounding word
$values = trim($values);
// compare with false, and skip empty strings
if ($values !== "" and false === strpos($file, $values)) {
// Add word to end of array, you can add quotes if you want
$keepWords[] = '"' . $values . '"';
}
}
// Glue all words together with commas
$keepText = implode(",", $keepWords);
// Write that to file
fwrite($myfile, $keepText);
请注意,您不应按照docs中的说明编写!strpos(..)
false === strpos(..)
。
另请注意,这种在$file
中搜索的方法可能会产生意外结果。例如,如果你的$file
字符串中有“痛苦”字样,那么单词“is”(如果原始文件中用逗号分隔)将被拒绝,因为它在$ file中找到。您可能想要查看此内容。
关于第二个问题
如果没有先在文件中添加换行符,它就无法运行这一事实让我觉得它与许多UTF-8
编码开头出现的Byte-Order Mark(BOM)有关文件。讨论了问题和可能的解决方案here和elsewhere。
如果确实是这个问题,我建议有两种解决方案:
使用文本编辑器将文件保存为UTF-8,但没有BOM。例如,notepad++
中有function removeBOM($str = "") {
if (substr($str, 0,3) == pack("CCC",0xef,0xbb,0xbf)) {
$str = substr($str, 3);
}
return $str;
}
这种可能性。
或者,将其添加到您的代码中:
file_get_contents
然后使用该函数包装所有$file = removeBOM(file_get_contents("test-action-write-a-doc-small.txt"));
// In small.txt there are words that will be excluded from the big list
$searchstrings = removeBOM(file_get_contents("test-action-write-a-doc-full.txt"));
// From this list the script is excluding the words that are in small.txt
次调用,如下所示:
int p;
x0=0, y0=0;
long double r, i;
cout<<"Enter c"<<endl;
cin>>r>>i;
for(int i= fx(-2); i<=fx(2); i++)
{
for(int j= fy(-2); j>=fy(2); j--)
{
long double x=0.0, y= 0.0,t;
x= gx(i), y= gy(j);
int k= -1;
while(( x*x + y*y <4)&& k<it-1)
{
t= x*x - y*y + r;
y= 2*x*y + i ;
x=t;
k++;
}
p= k*pd;
setcolor(COLOR(colour[p][0],colour[p][1],colour[p][2]));
putpixel(i,j,getcolor());
}
}
这将从文件中取出的字符串的开头删除这些有趣的字节。