我有如下数据库:

database name=words , table name=collection, column name=word
word
----
vivek
nidhi
neha
sidhu
hin


我需要搜索具有正则表达式条件的字符串数组:

<?php
$array=array('vivek','nidhi','neha','akshay','nitin','nid','nih','hin');
@ $db=new mysqli('localhost','root','','words');
if(mysqli_connect_errno())
{
    echo 'Error:Could not connect to the database';
}
else
echo 'connected';
$db->select_db('words');
$count = 0;
foreach($array as $s)
{
    if(preg_match('/^[nidhi]+$/', $s))
    {
    $query="select * from collection where word LIKE '%".$s."%'";
    $result=$db->query($query);
    if($result)
    $count += $result->num_rows;
    }

}
echo $count;
$db->close();
?>


我正在使用'/^[nidhi]+$/'正则表达式,所以我应该只获取2 ans i.e. nidhi,hin,但是我的问题是我正在获取3 ans i.e nidhi,nid,hin

最佳答案

您当前正在执行的方式是匹配单词,这些单词由nidhi中的任何字符组成。

如果只需要匹配nidhihin,则应该用管道输送(|)单词中的单词:

if(preg_match('/^nidhi|hin$/', $s))

关于php - 使用php搜索具有正则表达式条件的数据库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22071472/

10-12 00:56