如何在文本中搜索字符串?

时间:2013-11-20 10:06:34

标签: php

我想要做的是在长文本中搜索文本/单词,如:

$txt = 'text das text dss text good text text bad text';

我希望在good text中搜索$txt而不使用像stripos()或其他类似的PHP函数,我想在PHP中使用for并进行最小化循环尽可能。

我如何查看$txt搜索good text并获取其后的内容?

4 个答案:

答案 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。你想要与此相关的例子吗?