preg_replace внезапно перестает делать различия

#php #preg-match #words #strpos

#php #preg-match #слова #strpos

Вопрос:

Запутанный. Я использовал приведенный ниже параметр IF PREG_MATCH для различения слов, которые являются целыми словами, и слов, которые являются частями других слов. Он внезапно перестал функционировать в этом скрипте и любом другом используемом мной скрипте, которые зависят от этой команды.

В результате он находит части слов, хотя вы можете видеть, что ему явно указано находить только целые слова.

 $word = preg_replace("/[^a-zA-Z 0-9] /", " ", $word);                                        

if (preg_match('#b'.$word.'b#',$goodfile) amp;amp; (trim($word) != ""))  { 

        $fate = strpos($goodfile,$word);
        print $word ."  ";
        print $fate ."</br>";
  

Ответ №1:

Если вы хотите прочитать только первое слово строки текстового файла, как следует из вашего заголовка, попробуйте другой метод:

 // Get the file as an array, each element being a line
$lines = file("/path/to/file"); 

// Break up the first line by spaces
$words = explode(" ", $lines[0]); 

// Get the first word
$firstWord = $words[0]; 
  

Комментарии:

1. ах, неважно, я был в замешательстве — функция strpos не была синхронизирована с preg_match, она просто находит первый экземпляр строки в файле, тогда как preg_match находит фактическое слово целиком

Ответ №2:

Это было бы быстрее и чище, чем explode, и вы не будете создавать никакого массива

 $first_word = stristr($lines, ' ', true);