我遇到的问题是,如果我在数组$ 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中的单个字符,如果它本身就是?
答案 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);