PHP strpos() 和 str_replace()

PHP strpos() and str_replace()

我的小 php 脚本有问题。

我的代码应该像在论坛软件(例如 XenForo)中一样运行 follow-/unfollow-system。

所以我的脚本所做的是它在字符串中搜索用户,如果找到该名称,它会删除字符串中的用户名称。但我的问题是脚本由于某种原因无法搜索名称和逗号,因为我也尝试从字符串中删除逗号。

感谢任何帮助,提前致谢:)

示例

Peter 正在关注 Franz 和 George,但他想取消关注 George

脚本:

<?php

$user1 = "Peter";
$following1 = "Franz, George";

$user2 = "Franz";
$following2 = "Peter, George";

$user3 = "George";
$following3 = "Peter, Franz";


//
//
//

if (strpos($following1, $user3) == true) {
    echo "Can remove follow.";

    if (strpos($following1, ", $user3")) {
        $user3 = ", $user3";
        $fNew = str_replace($user3, "", $following1);
        echo "$fNew<br>";
    } else if (strpos($following1, "$user3, ")) {
        $use3 = "$user3, ";
        $fNew = str_replace("$user3", "", $following1);
        echo "$fNew<br>";
    }
} else if ($following1 == $user3) {
    echo "Can remove follow.";
    $fNew = str_replace($user3, "", $following1);
    echo "$fNew<br>";
} else {
    echo "Can't remove follow";
}

?>

strpos returns 字符串的位置,所以你需要检查它是否不是假的而不是检查它是否为真。 所以你应该使用:

strpos($following1, $user3) !== false

看看这个:

<?php

$follow = "Peter, Franz, Spongebob";
$guyToUnfollow = 'Franz';

$people = explode(',', $follow);
var_dump($people);
foreach ($people as $key => $person) {
    $person = trim($person);
    if ($person == $guyToUnfollow) {
        unset($people[$key]);
    }
}

$follow = implode(',',$people);

var_dump($follow);

首先,我们将 CSV 转换为数组,然后循环遍历它。我们使用 trim 删除空格,并取消设置数组中与您要取消关注的人匹配的任何值。最后,我们使用 implode 重新创建 csv。

看到它在这里工作https://3v4l.org/QEnHj