2016-06-20 2 views
0

Я занимаюсь анализом текста. У меня есть таблица с положительными словами. Записи извлекаются один за другим и вставляются в массив через mysqli_fetch_array.Strpos in php не работает

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 не может соответствовать строке, которая извлекается из таблицы.i.e. если текст «Отличная книга», условие if никогда не будет истинным. Несмотря на то, что слово «отлично» присутствует в таблице. И если я жестко кодирую значение $ wordx как

$wordx='excellent'; 

Только тогда это работает. Кто-нибудь знает, почему это происходит? :(Любая помощь была бы очень признательна :)

+0

P.S Эта проблема strpos отличается от других случаев, поэтому, пожалуйста, будьте внимательны. – Zeb

+0

Что делать, если вы взорвали пространство вместо пустой строки? implode ("", $ rowx) – jiboulex

+0

Откуда берется слово '$ word1'? В вашем коде есть '$ text' и' $ wordx' –

ответ

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) 

Обратите внимание, что это также будет соответствовать части слова и быть чувствительны к регистру, поэтому не является идеальным. Например: «жир» содержится в словах: «отец», «увлеченный» и «костный мозг».

+0

Как я использую mysqli_fetch_array, поэтому я должен использовать функцию implode. – Zeb

+0

Не можете ли вы ссылаться на каждое слово строки: '$ row ['word']'? Вы можете склеивать несколько значений полей вместе Но, возможно, это и есть намерение. Как выглядит ваш SQL и каждая строка? – Progrock

+0

Результат выглядит так: strpos (отличная книга, отлично) – Zeb

Смежные вопросы