我不能让strpos与换行符工作(I cannot get strpos to work with

2019-10-17 13:20发布

我很新的PHP和不能找出如何解决这个问题。 我有一个表格,并希望通过一些字符串,并把它与其他文件进行检查。 如果所有的字符串在同一行,但只要我把字符串的多条线路,它会失败这是工作的罚款。

我有下面的代码的PHP文件:

<?php
echo "<center><form method='post' enctype='multipart/form-data'>";
echo "<b></b><textarea name='texttofind' cols='80' rows='10'></textarea><br>";
echo "<input name='submit' type='submit' style='width:80px' value='Run' />";
echo "</form></center>";

$texttofind = $_POST['texttofind'];
if(get_magic_quotes_gpc()) {
    $texttofind = stripslashes($texttofind);
}
$texttofind = html_entity_decode($texttofind);
$s = file_get_contents ("/home/xxxxx/public_html/abc.txt");
if (strpos ($s, $texttofind) === false) {
    echo "not found";
}
else
    echo "found";
?>

在的abc.txt,我有

dog  
cat  
rat

每当我打开PHP页面,并输入在短短的狗或猫,会被罚款,并显示'found'的消息,但是当我输入多行像“狗<enter on keyboard>猫”,并点击提交按钮,它将返回在'not found'的消息。

什么是错的代码,还是要适应它,这样它就能搜索多个行?

先感谢您。

Answer 1:

<?php
$values=explode("\n",$txttofind);
foreach($values as $value)
{
    if (strpos ($s, $value) === false)
    {
        echo "$value : not found <br>";
    }
    else
    {
        echo "$value : found <br>";
    }
}
?>


Answer 2:

当您将上新的生产线的搜索词要添加不中你比较文件存在的字符。 例如,当你进入...

狗猫鼠

你实际上是发送一个字符串,它看起来像...

“狗\ NCAT \ nrat”

\ n表示字符13或标准的非窗口换行字符。 对此问题进行修复取决于你想要做什么。 您可以使用PHP的爆炸函数将输入字符串转换成一个数组,然后获得每个字位置搜索结果...

$inputs = explode("\n", $_POST['field']);
$positions = array();

foreach($inputs as $val)
    $positions[] = str_pos($compareTo, $val);

现在$位置应该是str_pos的那个地方发现的各行的阵列。

如果你还在试图寻找该比较文件具有所有的文字,你根本不关心,如果它是一个新行或不是你可以简单地剥离出新行字符一起(也删除\ r刚需安全)

$inputs = str_replace("\n", "", $_POST['field']);
$inputs = str_replace("\r", "", $inputs);

现在的投入将是“dogcatrat”。 您可以使用str_replace函数的第二个参数设置一个空间,而不是\ n要回的空间分隔的列表。

$inputs = str_replace("\n", " ", $_POST['field']);
$inputs = str_replace("\r", "", $inputs);

是的,我们仍然忽略\ r一起(傻窗口)。 所有我建议就如何使用数组,爆炸和内爆和str_replace函数读了一样。 许多人会对此进行评论,并告诉你,str_replace函数不好,你应该学习正则表达式。 作为一个有经验的开发者,我觉得很少数情况下,正则表达式替换用简单的字符替换提供任何更好的功能,它会导致你学习的命令完全新的语言。 现在忽略那些谁告诉你使用正则表达式,但绝对学习正则表达式在不久的将来。 你会需要它最终只是没有这种性质的东西。

http://php.net/manual/en/language.types.array.php

http://php.net/manual/en/function.explode.php

http://php.net/manual/en/function.implode.php

http://php.net/manual/en/function.str-replace.php

http://php.net/manual/en/function.preg-match.php



文章来源: I cannot get strpos to work with newline