我正在进行文本分析。我有一张表正面的表。记录是逐个获取的,并通过mysqli_fetch_array在一个数组中内爆。
while(($rowx = mysqli_fetch_array($resultx,MYSQLI_NUM)))
{
$wordx = implode("", $rowx);
if(strpos($text, $wordx) !== FALSE)
{
$count1 = substr_count($text, $wordx);
$pos_prob += .2 * $count1;
echo "pos prob is".$pos_prob;
}
}
但是strpos无法匹配从table.i.e中获取的字符串。如果文本是“这是一本优秀的书”,if条件永远不会成立。即使表中还有优秀这个词。如果我将值$ wordx硬编码为
$wordx='excellent';
只有这样才有效。有谁知道为什么会这样? :(任何帮助将不胜感激:)
答案 0 :(得分:0)
我不明白是否需要内爆每一行。我的假设是每行有一个单词。
简单的strpos文本匹配示例:
<?php
$words = array(
'big',
'fat',
'mamma'
);
$text = 'One day fat foo walked to the bar';
$matches = array();
foreach($words as $word) {
if(strpos($text, $word) !== false)
$matches[] = $word;
}
var_dump($matches);
输出:
array (size=1)
0 => string 'fat' (length=3)
请注意,这也会匹配单词部分并区分大小写,因此不太理想。例如:'fat'包含在单词中:'father','infatuated'和'marrowfat'。