PHP如何检查包含字符串列表的文件是否包含完整单词

PHP如何检查包含字符串列表的文件是否包含完整单词,php,string,Php,String,我想检查此类文件是否包含完整字符串: 杰克 马里恩 保罗 我有这个代码,但是如果$first\u name只是“Ma”,那么$valid就是1 $handle = fopen('firstname.txt', 'r'); $valid = 0; // init as false while (($buffer = fgets($handle)) !== false) { if (strpos($buffer, ucfirst($first_name)) !== false) {

我想检查此类文件是否包含完整字符串:

杰克

马里恩

保罗

我有这个代码,但是如果$first\u name只是“Ma”,那么$valid就是1

$handle = fopen('firstname.txt', 'r');
$valid = 0; // init as false
while (($buffer = fgets($handle)) !== false) {
    if (strpos($buffer, ucfirst($first_name)) !== false) {
        $valid = 1;
    }      
}
fclose($handle);

如何检查是否只有“Marion”(完整)可以工作?

您需要在数据源中将分隔符(昏迷点、@、#、…)封装到您的名称中。 在测试中添加它们之后,删除ucfirst函数并转换为大写(仅用于测试)。 这样,文本文件“firstname.txt”中名字的大小写就不重要了

@杰克@

@马里恩@

@保罗@

更新(不更改源文件)

如果源文件无法更改,另一种方法是在
$first\u name
末尾添加回车符

// Pre-calculation of test first name
$firstNameTest = strtoupper($first_name) . PHP_EOL;
$handle = fopen('firstname.txt', 'r');
$valid = 0; // init as false
while (($buffer = fgets($handle)) !== false) {
    // Test upper case buffer versus pre-calculated first name
    if (strpos(strtoupper($buffer), $firstNameTest) !== false) {
        $valid = 1;
    }      
}
fclose($handle);

我无法编辑数据源,因为它已被其他脚本使用…我添加了另一个脚本,该脚本末尾带有回车符。我不确定这是否有效,但值得一试。你能接受我的回答吗?这将“支付”我与stackoverflow声誉点:-)我做了,但我有这个消息:感谢反馈!声誉低于15的人所投的票将被记录,但不会更改公开显示的帖子分数。通过我对您的问题的向上投票,您的声誉分数超过15(您的个人资料图片右侧以粗体显示的数字)。所以现在你们的投票被公开使用:-)我想你们需要点击灰色的勾号来接受答案()。上下箭头用于投票,只有在stackoverflow声誉系统完美的情况下才允许投票!感谢您接受我的回答:-)
// Pre-calculation of test first name
$firstNameTest = strtoupper($first_name) . PHP_EOL;
$handle = fopen('firstname.txt', 'r');
$valid = 0; // init as false
while (($buffer = fgets($handle)) !== false) {
    // Test upper case buffer versus pre-calculated first name
    if (strpos(strtoupper($buffer), $firstNameTest) !== false) {
        $valid = 1;
    }      
}
fclose($handle);