我想要做的是在长文本中搜索文本/单词,如:
$txt = 'text das text dss text good text text bad text';
我希望在good text
中搜索$txt
而不使用像stripos()
或其他类似的PHP函数,我想在PHP中使用for
并进行最小化循环尽可能。
我如何查看$txt
搜索good text
并获取其后的内容?
答案 0 :(得分:2)
<?php
function findRemaining($needle, $haystack) {
$result = '';
for ($i = 0, $found = false; isset($haystack[$i]); $i += 1) {
if (!$found) {
for ($j = 0; isset($haystack[$i + $j], $needle[$j]); $j += 1) {
if ($haystack[$i + $j] !== $needle[$j]) {
continue 2;
}
}
$found = true;
}
$result .= $haystack[$i];
}
return $result;
}
$haystack = 'text das text dss text good text text bad text';
$needle = 'good text';
// string(23) "good text text bad text"
var_dump(
findRemaining($needle, $haystack)
);
答案 1 :(得分:1)
<?php
$txt = 'text das text dss text good text text bad text';
$search = 'good text';
$pos = -1;
$i = 0;
while (isset($txt{$i})) {
$j = 0;
$wrong = false;
while (isset($search{$j})) {
if ($search{$j} != $txt{$i + $j}) {
$wrong = true;
break;
}
$j++;
}
if (!$wrong) {
$pos = $i;
break;
}
$i++;
}
echo 'Position: '.$pos; // in your case it will return position: 23
?>
答案 2 :(得分:1)
试试这个,让我知道......
$txt = "text das text dss text good text text bad text";
function search_string($word, $text){
$parts = explode(" ", $text);
$result = array();
$word = strtolower($word);
foreach($parts as $v){
if(strpos(strtolower($v), $word) !== false){
$result[] = $v;
}
}
if(!empty($result)){
return implode(", ", $result);
}else{
return "Not Found";
}
}
echo search_string("text", $txt);
答案 3 :(得分:-1)
您可以在此处使用preg_match
。你想要与此相关的例子吗?