Как удалить строку, если слово существует? (PHP) - PullRequest
1 голос
/ 21 марта 2011

Эй, я хочу удалить всю строку, если в ней есть слово? через PHP?

Пример: hello world, this world rocks. Что он должен сделать: если он найдет слово hello, он должен удалить всю строку. Как я могу это сделать, и в скобках могут быть слова и кавычки.

Спасибо.

Ответы [ 3 ]

4 голосов
/ 21 марта 2011
$str = 'Example: hello world, this world rocks.
What it should do is: 
if it finds the word hello it should
remove the whole line. How can i do that and there 
could be words in between brackets and inverted commas also.';

$lines = explode("\n", $str);

foreach($lines as $index => $line) {
   if (strstr($line, 'hello')) {
      unset($lines[$index]);
   }
}

$str = implode("\n", $lines);

var_dump($str);

Вывод

string(137) "What it should do is: 
remove the whole line. How can i do that and there 
could be words in between brackets and inverted commas also."

CodePad .

Вы сказали, что слово может быть может быть словами в скобках и кавычками тоже.

В случае, если слово требуется только само по себе или между скобками и кавычками, вы можете заменить strstr() на это ...

preg_match('/\b["(]?hello["(]?\b/', $str);

Ideone .

Я предполагал, что в скобках вы подразумевали круглые скобки и кавычки, а в двойных кавычках.

Вы также можете использовать регулярное выражение в многострочном режиме, однако это не будетс первого взгляда очевидно, что делает этот код ...

$str = trim(preg_replace('/^.*\b["(]?hello["(]?\b.*\n?/m', '', $str));

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

1 голос
/ 21 марта 2011

Если у вас есть массив строк, таких как

$lines = array(
  'hello world, this world rocks',
  'or possibly not',
  'depending on your viewpoint'
);

Вы можете просмотреть массив и найти слово

$keyword = 'hello';
foreach ($lines as &$line) {
  if (stripos($line, $keyword) !== false) {
    //string exists
    $line = '';
  } 
}

int stripos ( string $haystack , string $needle [, int $offset = 0 ] ): http://www.php.net/manual/en/function.stripos.php

0 голосов
/ 21 марта 2011

Красиво и просто:

$string = "hello world, this world rocks"; //our string
if(strpos($string, "hello") !== FALSE) //if the word exists (we check for false in case word is at position 0)
{
  $string = ''; //empty the string.
}
...