📜  树枝在字符串中 - PHP (1)

📅  最后修改于: 2023-12-03 15:40:27.149000             🧑  作者: Mango

树枝在字符串中 - PHP

有时候我们需要在字符串中查找特定的字符或字符串,但是这些字符或字符串可能被嵌在其他字符中间。在这种情况下,我们可以使用树枝。

树枝分类为正向查找和负向查找。

正向查找

正向查找从字符串开头开始查找匹配的字符或字符串。

例如,我们要在字符串 "Hello World!" 中查找字符 "l" 的位置。我们可以使用 strpos() 函数。

$string = "Hello World!";
$pos = strpos($string, "l");
echo $pos; // 输出 2

该函数返回匹配的第一个字符的索引。在上面的例子中,第一个字符 "l" 的索引是 2。

如果我们想要找到所有的匹配字符的位置,我们可以使用 strpos() 函数的第三个参数,指定从哪个索引开始查找。然后,我们可以使用一个循环来一次一次地查找所有匹配的字符。

例如,我们要查找所有的字符 "l" 的位置。

$string = "Hello World!";
$pos = 0;
while (($pos = strpos($string, "l", $pos)) !== false) {
    echo $pos . "\n";
    $pos++;
}

// 输出
// 2
// 3
// 9

在上面的例子中,我们使用了一个 while 循环来查找所有的匹配字符。我们也使用了一个额外的 $pos 变量来保存上一个匹配字符的索引,以便从新的索引开始查找下一个匹配字符。

负向查找

负向查找从字符串结尾开始查找匹配的字符或字符串。

我们可以使用 strrpos() 函数来进行负向查找。

例如,我们要查找字符串 "Hello World!" 中最后一个字符 "l" 的位置。我们可以使用 strrpos() 函数。

$string = "Hello World!";
$pos = strrpos($string, "l");
echo $pos; // 输出 9

该函数返回最后一个匹配字符的索引。在上面的例子中,最后一个字符 "l" 的索引是 9。

同样,我们可以使用 strrpos() 函数的第三个参数来从哪个索引开始查找。我们可以使用一个循环来一次一次地查找所有匹配的字符。

例如,我们要查找所有的字符 "l" 的位置。

$string = "Hello World!";
$pos = strlen($string);
while (($pos = strrpos($string, "l", $pos - strlen($string) - 1)) !== false) {
    echo $pos . "\n";
}

// 输出
// 9
// 3
// 2

在上面的例子中,我们使用了一个 while 循环来查找所有的匹配字符。我们使用了一个额外的 $pos 变量来保存上一个匹配字符的索引,以便从新的索引开始查找下一个匹配字符。注意,我们也需要在调用 strrpos() 函数时用负数来指定第三个参数的索引。