在 laravel 或 mysql 中的字符串中搜索文本
search for text within string in laravel or mysql
我使用 my SQL
作为我项目的后端,我需要从 database
获取所有记录,其中输入字符串的某些部分在 database
字符串中可用,例如:
table = seller
id company_name seller_name
1 companyname1 seller1
2 companyname2 seller2
3 companyname3 seller3
4 companyname4 seller4
给定的字符串是 1105 companyname1 is outstanding
所以我需要为给定的字符串获取 id = 1
如果可以使用 laravel
或 MySQL
那么请帮助我。
您可以使用 like
:
构建查询
where $YourString like concat('%', companyname, '%')
注意:在某些情况下,一个公司名称可能与另一个公司名称非常相似("company1" 和 "company10")。如果这是一个问题,正则表达式可能会有所帮助。
首先,您必须将该字符串转换为数组。
$str = "1105 companyname1 is outstanding";
$str = explode(' ' , $str);
$results = Seller::whereIn('company_name' , $str)->get();
注:
在将随机字符串转换为数组时,会出现用户输入更多空格的错误。
假设用户输入了一个像 $str = "1105 companyname1 is outstanding";
这样的字符串,这将创建更多的元素。喜欢
array(
0 => '1104',
1 => '',
2 => 'companyname1',
3 => 'is',
4 => 'outstanding'
)
所以,为了避免这种情况,我不得不建议您多拆分一些空间。你可以通过
$str = preg_split('/\s+/', $string, -1, PREG_SPLIT_NO_EMPTY);
我使用 my SQL
作为我项目的后端,我需要从 database
获取所有记录,其中输入字符串的某些部分在 database
字符串中可用,例如:
table = seller
id company_name seller_name
1 companyname1 seller1
2 companyname2 seller2
3 companyname3 seller3
4 companyname4 seller4
给定的字符串是 1105 companyname1 is outstanding
所以我需要为给定的字符串获取 id = 1
如果可以使用 laravel
或 MySQL
那么请帮助我。
您可以使用 like
:
where $YourString like concat('%', companyname, '%')
注意:在某些情况下,一个公司名称可能与另一个公司名称非常相似("company1" 和 "company10")。如果这是一个问题,正则表达式可能会有所帮助。
首先,您必须将该字符串转换为数组。
$str = "1105 companyname1 is outstanding";
$str = explode(' ' , $str);
$results = Seller::whereIn('company_name' , $str)->get();
注:
在将随机字符串转换为数组时,会出现用户输入更多空格的错误。
假设用户输入了一个像 $str = "1105 companyname1 is outstanding";
这样的字符串,这将创建更多的元素。喜欢
array(
0 => '1104',
1 => '',
2 => 'companyname1',
3 => 'is',
4 => 'outstanding'
)
所以,为了避免这种情况,我不得不建议您多拆分一些空间。你可以通过
$str = preg_split('/\s+/', $string, -1, PREG_SPLIT_NO_EMPTY);