删除字符串中的字符串

时间:2012-07-21 12:49:04

标签: php

我遇到的问题是,如果我在数组$ wordstodelete中有单个字符,那么它会从$ oneBigDescription中的单词中删除它们。

$oneBigDescription = str_replace ( $wordstodelete, '', $oneBigDescription);

所以它看起来像这样:

array (size=51)
  'blck' => int 5
  'centrl' => int 6
  'clssc' => int 6
  'club' => int 10
  'crs' => int 54
  'deler' => int 7
  'delers' => int 5
  'engl' => int 6
  'felne' => int 8
  'gude' => int 5
  'hot' => int 5
  'jgur' => int 172
  'jgurs' => int 5
  'lke' => int 6

有没有办法只删除$ oneBigDescription中的单个字符,如果它本身就是?

3 个答案:

答案 0 :(得分:2)

$oneBigDescription = preg_replace("/\b$wordstodelete\b/", '', $oneBigDescription);

/b应该查找单词边界,以确保在使用一个字符时它是一个孤立的单词。

编辑:没有完全正确地阅读 - 这更多地假设您将$ wordstodelete作为一个单词数组循环。

所以,像这样:

$desc = "blah blah a b blah";
$wordstodelete = array("a", "b");
foreach($wordstodelete as $delete)
{
    $desc= preg_replace("/\b$delete\b/", "", $desc);
}

EDIT2:对此并不满意,所以稍微改进一下:

$arr = "a delete aaa a b me b";
$wordstodelete = array("a", "b");
$regex = array();
foreach($wordstodelete as $word)
{
    $regex[] = "/\b$word\b\s?/";
}
$arr = preg_replace($regex, '', $arr);

此帐户用于取出以下空格,在HTML中通常不会出现问题(因为通常不会渲染连续的空格),但仍然可以将其取出。这也会在前面创建一个正则表达式数组,看起来好一些。

答案 1 :(得分:0)

听起来你可能需要使用一点正则表达式

$oneBigDescription = preg_replace('/\sa\s/', ' ', $oneBigDescription);

这将采用“黑色为中心”并返回“黑色中央”

答案 2 :(得分:0)

您可以使用preg_replace自行替换"单词"如下: (我正在生成正则表达式,因此单词列表可以保持不变)

$wordsToReplace = ("a", "foo", "bar", "baz");
$regexs = array();
foreach ($wordsToReplace as $word) {

    $regexs[] = "/(\s?)". $word . "\s?/";
}

$oneBigDescription = preg_replace($regexs, '\1', $oneBigDescription);