如何使用 php 的 strpos 函数计算数组中的相似词?
How to count similar words from array with strpos function of php?
我正在使用 xpdf 将 pdf 转换为文本,然后借助正则表达式函数搜索 pdf 中冒号后的单词,然后使用 php 的 strpos 函数循环该数据并将它们存储到 database.Its 为我工作的单一数据。
但是对于多个相同的数据,我不知道如何将这些数据添加到数据库中。
我将逐步向您展示我的代码和响应:
我正在使用 xpdf 通过以下代码将我的 pdf 转换为文本格式。
$text1 = (new Pdf('C:\xpdf-tools-win-4.00\bin64\pdftotext.exe'))
->setPdf($pathoffile)
->setOptions(['layout', 'layout'])
->text();
$string = $text1;
在 echo $string
我正在获取数据,即:
In respect of Shareholders
Name: xyz
Residential address: dublin
No of Shares: 40
Name: abc
Residential address: canada
No of Shares: 2
所以,我总共得到了 2 位股东的上述数据。现在我想将此数据存储在我的 table shareholders
.
中
现在,我正在使用 preg_match_all 函数将此数据转换为数组,然后存储到数据库中。
$array = array('Name','Residential address','No of Shares');
preg_match_all($regex, $string, $matches);
使用以下函数通过 strpos() 获取数组。
function strposa($haystack, $needles=array(), $offset=0) {
$chr = array();
foreach($needles as $needle) {
$res = strpos($haystack, $needle, $offset);
if ($res !== false) $chr[$needle] = $res;
}
if(empty($chr)) return false;
return min($chr);
}
if($this->strposa($text1, $array) !== false)
{
foreach ($matches as $value) {
//print_r($matches);
$value=array_map('trim',$value);
$directors_info->name= $value[0];
$directors_info->address= $value[1];
$directors_info->shares= $value[2];
}
}
我的 print_r($matches)
数组显示数据:
[0] => Array
(
[0] => xyz
[1] => dublin
[2] => 40
[3] => abc
[4] => canada
[5] => 2
)
但如果我有多个股东,那么它对我来说就不起作用了。我的预期输出是:
[0] => Array
(
[0] => xyz
[1] => dublin
[2] => 40
[0] => abc
[1] => canada
[2] => 2
)
我关心的是在 table 中分别存储 2 行 2 行数据。如何实现这种数据。提前致谢。
你不能有重复的键,所以你可以创建一个多维数组。如果每一行的数据总是存在,您可以使用大小为 3:
的 array_chunk
$matches = array_chunk($matches,3);
那会给你:
Array
(
[0] => Array
(
[0] => xyz
[1] => dublin
[2] => 40
)
[1] => Array
(
[0] => abc
[1] => canada
[2] => 2
)
)
我正在使用 xpdf 将 pdf 转换为文本,然后借助正则表达式函数搜索 pdf 中冒号后的单词,然后使用 php 的 strpos 函数循环该数据并将它们存储到 database.Its 为我工作的单一数据。 但是对于多个相同的数据,我不知道如何将这些数据添加到数据库中。
我将逐步向您展示我的代码和响应:
我正在使用 xpdf 通过以下代码将我的 pdf 转换为文本格式。
$text1 = (new Pdf('C:\xpdf-tools-win-4.00\bin64\pdftotext.exe'))
->setPdf($pathoffile)
->setOptions(['layout', 'layout'])
->text();
$string = $text1;
在 echo $string
我正在获取数据,即:
In respect of Shareholders
Name: xyz
Residential address: dublin
No of Shares: 40
Name: abc
Residential address: canada
No of Shares: 2
所以,我总共得到了 2 位股东的上述数据。现在我想将此数据存储在我的 table shareholders
.
现在,我正在使用 preg_match_all 函数将此数据转换为数组,然后存储到数据库中。
$array = array('Name','Residential address','No of Shares');
preg_match_all($regex, $string, $matches);
使用以下函数通过 strpos() 获取数组。
function strposa($haystack, $needles=array(), $offset=0) {
$chr = array();
foreach($needles as $needle) {
$res = strpos($haystack, $needle, $offset);
if ($res !== false) $chr[$needle] = $res;
}
if(empty($chr)) return false;
return min($chr);
}
if($this->strposa($text1, $array) !== false)
{
foreach ($matches as $value) {
//print_r($matches);
$value=array_map('trim',$value);
$directors_info->name= $value[0];
$directors_info->address= $value[1];
$directors_info->shares= $value[2];
}
}
我的 print_r($matches)
数组显示数据:
[0] => Array
(
[0] => xyz
[1] => dublin
[2] => 40
[3] => abc
[4] => canada
[5] => 2
)
但如果我有多个股东,那么它对我来说就不起作用了。我的预期输出是:
[0] => Array
(
[0] => xyz
[1] => dublin
[2] => 40
[0] => abc
[1] => canada
[2] => 2
)
我关心的是在 table 中分别存储 2 行 2 行数据。如何实现这种数据。提前致谢。
你不能有重复的键,所以你可以创建一个多维数组。如果每一行的数据总是存在,您可以使用大小为 3:
的 array_chunk$matches = array_chunk($matches,3);
那会给你:
Array
(
[0] => Array
(
[0] => xyz
[1] => dublin
[2] => 40
)
[1] => Array
(
[0] => abc
[1] => canada
[2] => 2
)
)