如果单词存在,如何删除行? (PHP)

时间:2011-03-21 12:51:09

标签: php word line exists

嘿,我想删除整行,如果有一个单词?通过PHP?

示例:hello world, this world rocks。 它应该做的是:如果找到单词hello,它应该删除整行。 我怎么能这样做,括号和引号之间也可能有单词。

感谢。

3 个答案:

答案 0 :(得分:4)

$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));

Related Question

答案 1 :(得分:1)

如果您有一系列像这样的行

$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

答案 2 :(得分:0)

简单明了:

$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.
}