0

これはばかげているように聞こえるかもしれませんが、検索結果で検索された文字/単語を強調表示しようとしたところ、以下の関数が見つかりましたが、どこに配置すればよいかわかりません.php内のタグの下と上のタグをさらに下に試してみましたが、うまくいきませんでした

   function sublinhamos($text,$searchquery) {
        $wordsArray = array();
        $markedWords = array();
        // explode the phrase in words
        $wordsArray = explode(' ', $searchquery); 




        foreach ($wordsArray as $k => $searchquery) {
          $markedWords[$k]='<mark>'.$searchquery.'</mark>';
        }




        $text = str_ireplace($wordsArray, $markedWords, $text);




        //right trows results
        return $text;
    }

致命的なエラー: 20 行目の /home/u472061620/public_html/search4.php の未定義関数 sublinhamos() を、上記のコードを挿入せずに以下のコードで呼び出します。

<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');


$search_output = "";

if(isset($_POST['searchquery']) && $_POST['searchquery'] != ""){
        $searchquery = preg_replace('#[^a-z 0-9?!]#i', '', $_POST['searchquery']);
    if($_POST['filter1'] == "Whole Site"){
    $sqlCommand = "(SELECT * FROM products WHERE product_name LIKE '%$searchquery%' OR details LIKE '%$searchquery%') ";
    } 
    require_once("storescripts/connect_to_mysqli.php");
    $query = mysqli_query($myConnection,$sqlCommand) or die(mysqli_error($myConnection));
    $count = mysqli_num_rows($query);
    if($count >= 1){
        $search_output .= "<hr />$count results for <strong>$searchquery</strong><hr />$sqlCommand<hr />";
        while($row = mysqli_fetch_array($query)){
                $id=$row["id"];
            $product_name = sublinhamos($row["product_name"],$searchquery);
                    $details = sublinhamos($row['details'],$searchquery); 
                $category=$row["category"];
                $subcategory=$row["subcategory"];
            $search_output .= "ID: $id <br/> Name: $product_name -<br/>$details<br />$category<br/>$subcategory<br/>
<a href='product.php?id=$id'>link</a><br/>";



        } // close while
    } else {
        $search_output = "<hr />0 results for <strong>$searchquery</strong><hr />$sqlCommand";
    }
}

?>

関数 sublinhamos をどこに置くべきか誰か教えてもらえますか? タグ内、タグ付き/タグなし、下のphpタグ内で試してみました...すべて運が悪い

<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');
// Original PHP code by Chirp Internet: www.chirp.com.au
// Please acknowledge use of this code by including this header.

function myTruncate($string, $limit, $break=" ", $pad="...")
{
  // return with no change if string is shorter than $limit
  if(strlen($string) <= $limit) return $string;

  // is $break present between $limit and the end of the string?
  if(false !== ($breakpoint = strpos($string, $break, $limit))) {
    if($breakpoint < strlen($string) - 1) {
      $string = substr($string, 0, $breakpoint) . $pad;
    }
  }

  return $string;
}

$search_output = "";

if(isset($_POST['searchquery']) && $_POST['searchquery'] != ""){
        $searchquery = preg_replace('#[^a-z 0-9?!]#i', '', $_POST['searchquery']);
    if($_POST['filter1'] == "Whole Site"){
    $sqlCommand = "(SELECT * FROM products WHERE product_name LIKE '%$searchquery%' OR details LIKE '%$searchquery%') ";
    } 
    require_once("storescripts/connect_to_mysqli.php");
    $query = mysqli_query($myConnection,$sqlCommand) or die(mysqli_error($myConnection));
    $count = mysqli_num_rows($query);
    if($count >= 1){
        $search_output .= "<hr />$count results for <strong>$searchquery</strong><hr />$sqlCommand<hr />";
        while($row = mysqli_fetch_array($query)){
                $id=$row["id"];
            $product_name =$row["product_name"];
                    $details = $row["details"]; 
                $category=$row["category"];
                $subcategory=$row["subcategory"];
            $description = "<a href='product.php?id=$id'>ID: $id <br/> Name: $product_name -<br/>$details<br />$category<br/>$subcategory<br/>
link</a><br/>";
$search_output = myTruncate($description, 100," ");
        } // close while
    } else {
        $search_output = "<hr />0 results for <strong>$searchquery</strong><hr />$sqlCommand";
    }
}

?>

これについては心配しないでください。上記のように切り捨て関数を実装したので、検索されたキーワードを強調表示する必要はないようです..ただし、可能であれば、この強調表示関数を実装することは追加機能になります. 助けようとする人々に感謝します

4

1 に答える 1