PHP как заменить точные слова в строке - PullRequest
1 голос
/ 03 апреля 2012

У меня есть этот php-код

 $filename = "verbs.php"; //  http://alylores.x10.mx/vega/verbs2.php  
 $handle = fopen($filename, "r");  
 $verbs = fread($handle, filesize($filename));  
 fclose($handle);

, и я использовал PHP explode() function

, чтобы разбить слова на массивы

$verbslist = explode(",", $verbs);

и у меня также есть строка, например:

$sentence = "Where is Phisz' dog?";

, а затем я использовал функцию str_replace(), чтобы удалить глаголы и некоторые конкретные слова из предложения, чтобытолько слева будут субъекты.

$newsentence = str_replace($verbslist,"",$sentence);

, но результат:

новое предложение: Phz' dog? // is on Phisz был также удален.

и я понял, что проблема в том, что Phisz слова содержат is, который также был удален с помощью str_replace().

, что я хочу, так это как я могу удалить слова/ Вебс из предложения, не затрагивая другие слова.Я имею в виду удаление EXACT VERB / ​​WORD ..... и в случае нечувствительности к регистру ...

, что ожидаемый результат будет таким:

новое предложение: Phisz' dog?

Ответы [ 2 ]

6 голосов
/ 03 апреля 2012

Использование регулярного выражения типа /\bword\b/ заменит только слово в целом. \b обозначает границу слова. Таким образом, вы можете сделать что-то вроде этого:

foreach ($verblist as &$verb) {
    $verb = '/\b' . preg_quote($verb, '/') . '\b/';
}

$newsentence = preg_replace($verblist, '', $sentence);
0 голосов
/ 03 апреля 2012

Поскольку вы хотите удалить точные глаголы, вы можете поместить пробелы вокруг каждого из ваших глаголов, чтобы ваш список был примерно таким, с _ обозначением пробела

" is "
" where "

и т.д.

Затем, чтобы получить без учета регистра, сделайте все ваши глаголы строчными, а затем оберните их в strtolower ()

strtolower($sentence)

Таким образом, ваша замена будет выглядеть примерно так:

$newsentence = str_replace($verbslist,"",strtolower($sentence));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...