2016-05-12 68 views
0

我有2個表和方案是這樣的:如何在php中實現字符串匹配的蠻力算法?

tb_keywords

id_keyword 
keyword 

tb_post

id_post 
description 

我想要實現在PHP蜇匹配蠻力算法。如果描述符合/類似於關鍵字,則此描述將插入到tb_post中。我試圖做這個工作,但它不工作。 沒有錯誤信息,只是給出了空白的結果。

HTML

<textarea type="text" class="form-control" name="description" id="description" placeholder="Description" required /></textarea> 

PHP

$description = trim($_POST['description']); 
$check = $db_con->prepare("SELECT * FROM tb_keywords"); 
$check->execute(); 
$row=$check->fetch(PDO::FETCH_OBJ); 
$positive = $row->keyword; 

function brute_force($positive, $description) 
{ 
    $n = strlen($description); 
    $m = strlen($positive); 
    for ($i = 0; i < $n-$m; $i++) { 
     $j = 0; 
     while ($j < $m && $description[$i+$j] == $positive[$j]) { 
      $j++; 
     } 
     if ($j == $m) { 
      return $i; 
     } 
     return -1; 
    } 
    $find[$i]=brute_force($positive, $description); 
    $create=$db_con->prepare("INSERT INTO tb_post(description) VALUES(:description)"); 
    $create->bindParam(":description", $description); 
    $create->execute(); 
    $row=$create->rowCount(); 
    if($row>0) { 
     echo "success"; 
    } else { 
     echo "fail"; 
    } 

} 
+0

你的代碼有一些問題。它永遠不會繼續'for'循環,並且永遠不會到達'for'循環之後的部分代碼。據我瞭解,您必須嘗試在說明中找到關鍵字,但對於不區分大小寫的情況,使用[stripos()](http://php.net/manual/ru/function.stripos.php)會更容易搜索。 – Wizard

回答

0

要查看是否有特定的詞是在文本,您可以使用正則表達式用字邊界。

的preg_match( 「/ \ bPHP \ B /」, 「在PHP中的正則表達式」)#在 字符串匹配單詞 「PHP」

$description = trim($_POST['description']); 
$check = $db_con->prepare("SELECT * FROM tb_keywords"); 
$check->execute(); 
while($row = $check->fetch(PDO::FETCH_ASSOC)) { 
    $search = $row['keyword']; 
    if (preg_match("/\b$search\b/", $description)) { 
     $create=$db_con->prepare("INSERT INTO tb_post(description) VALUES(:description)"); 
     $create->bindParam(":description", $description); 
     $create->execute(); 
     $row=$create->rowCount(); 
     if($row>0) { 
      echo "success"; 
     } else { 
      echo "fail"; 
     } 
    } 
} 
+0

這段代碼是否仍然使用蠻力算法? –

+0

正則表達式使用[** Thompson算法**](https://en.wikipedia.org/wiki/Thompson's_construction) –

+0

對不起,我必須使用蠻力算法。我無法改變它,因爲在我的提議中,我寫了強力字符串匹配算法,我使用。無論如何謝謝你回答我的問題。 –