我一直在尝试搜索在另一个字符串中查找字符串的方法并返回使用PHP找到它的位置,但不使用strpos
,因为这将帮助我学习编程而不依赖关于本机功能这么多。
我该怎么做?
答案 0 :(得分:2)
我不认为依赖本机功能有什么不妥,但如果你只想弄清strpos
之类的东西会如何工作呢?场景,这是一个只使用语言结构的非常基本的例子:
function my_strpos ($haystack, $needle, $offset = 0) {
// for loop with indexes for both strings, up to the length of $haystack
for ($h_index=$offset, $n_index=0; isset($haystack[$h_index]); $h_index++, $n_index++) {
if ($haystack[$h_index] == $needle[$n_index]) { // *CHARACTERS MATCH*
if (!isset($start_pos)) $start_pos = $h_index; // set start_pos if not set
if (!isset($needle[$n_index + 1])) return $start_pos; // all characters match
} else { // *CHARACTERS DON'T MATCH*
$n_index = -1; // reset $needle index
unset($start_pos); // unset match start pos.
}
}
// all charactes of $haystack iterated without matching $needle
return false;
}
这显然是一个天真的实现,它不会检查有效输入或处理错误,但希望它会演示一种在另一个字符串中找到一个字符串的可能方法。
如果你真的想知道strpos
在幕后如何工作,here is a great (although a bit dated) article关于如何理解PHP源代码,恰好使用strpos
举个例子。
答案 1 :(得分:0)
您可以使用strstr,文档here
<?php
$haystack = "Hello my dear friend";
$needle = "friend";
// Returns false if needle is not inside haystack
strstr($haystack, $needle);
?>