Php 搜索引擎-字符串前后

Php 搜索引擎-字符串前后,php,string,substring,substr,Php,String,Substring,Substr,A我有这样的东西。它工作的很好,但我已经尝试了2个小时来削减搜索结果-100 str前$word和100后。 我怎么做这个 $word = $_POST["search"]; $sql_events = mysql_query("SELECT * FROM events WHERE event_title LIKE '%" . $word . "%' OR event_desc LIKE '%" . $word ."%'"); function highlightWords($content

A我有这样的东西。它工作的很好,但我已经尝试了2个小时来削减搜索结果-100 str前$word和100后。 我怎么做这个

$word = $_POST["search"];

$sql_events = mysql_query("SELECT * FROM events WHERE event_title LIKE '%" . $word . "%' OR event_desc LIKE '%" . $word ."%'");

function highlightWords($content, $word){
    if(is_array($search)){
        foreach ( $search as $word ){
            $content = str_ireplace($word1, '<span>'.$word1.'</span>', $content);
        }
    } else {
        $content = str_ireplace($word, '<span>'.$word.'</span>', $content);     
    }
    return $content;
}
while($row = mysql_fetch_array($sql_events)){

    $content = $row["event_desc"];

    $result = highlightWords($content, $word);
    echo '<li>
            <H3><a href="">'.$row['event_title'].'</a></H3>
            <div class="text">'.$result .'...</div>
         </li>';
}
$word=$\u POST[“搜索”];
$sql_events=mysql_query(“从事件中选择*,其中事件标题类似“%”,$word.“%”或事件描述类似“%”,$word.“%”);
函数highlightWords($content,$word){
if(is_数组($search)){
foreach($word搜索){
$content=str_ireplace($word1、.$word1.'、$content);
}
}否则{
$content=str_ireplace($word、.$word.'、$content);
}
返回$content;
}
while($row=mysql\u fetch\u数组($sql\u事件)){
$content=$row[“事件描述”];
$result=highlightWords($content,$word);
回声'
  • “.$result.”。。。
  • '; }
    您需要此正则表达式:

    [\d\D]{0,100}word[\d\D]{0,100}
    
    其中,
    word
    是主单词:)。下面是您的代码:

    $content = $row["event_desc"];
    $word_in_regexp = quotemeta($content);
    preg_match("/[\d\D]{0,100}$word_in_regexp[\d\D]{0,100}/i", $content, $matches);
    $content = $matches[0];
    
    我们在case
    $content
    中使用的字符包括
    [
    \
    等)。

    $wordpos1=(mb\u strpos($content,$word)-100);
    
    $wordpos1 = (mb_strpos($content, $word) - 100);
      if ($wordpos1 < 0){
        $wordpos1 = 0;
      } else {
        $wordpos1 = (mb_strpos($content, $word) - 100);
      }
      $wordpos2 = (mb_strpos($content, $word) + 400);
    
      $resText = mb_substr($content, $wordpos1, $wordpos2);
    
      $result = highlightWords($resText, $word);
    
    如果($wordpos1<0){ $wordpos1=0; }否则{ $wordpos1=(mb_strpos($content,$word)-100); } $wordpos2=(mb_strpos($content,$word)+400); $resText=mb_substr($content,$wordpos1,$wordpos2); $result=highlightWords($resText,$word);

    这对我来说很有用:)

    你到底想要什么?我不明白你的问题…我想OP想要剪切结果,这样只有
    $word
    前后的100个字符显示给用户(而不是整个文档)。你尝试了什么?你能展示你最有希望的尝试吗?我想这是他们想要剪切的字符串-
    $content=$row[“event\u desc”];
    。我说的对吗?
    $content=$row[“event\u desc”]
    -是。但是在搜索词周围剪切它。我尝试了以下方法:
    preg\u replace(/^.*(.{0100})\b(.{0100})。*?$/I','\1\2\3',$text)
    必选在此之后,浏览器可以理解所有的PHP代码,比如文本。如果我将这个
    “/[\d\d]{0100}$word\u in_regexp[\d\d]{0100}/”
    更改为
    $word\u in_regexp
    ,PHP代码就可以工作了,根本不是回显结果值。似乎WP不喜欢正则表达式。