如何从这个旋转语法代码中删除星号?

时间:2014-09-11 18:49:55

标签: regex

这是我的代码,它是文本微调器(同义词)

public function fetchContent($keyword)
{
    $customContent = $this->getOption('custom_content_text');

    $this->_setHttpStatusCode(200);

    if (!$customContent)
    {
        $this->_setContentStatus(self::CONTENT_STATUS_NO_RESULTS);
        return false;
    }

    if (preg_match_all('/({\*)(.*?)(\*})/', $customContent, $result))
    {
        if (is_array($result[0]))
        {
            foreach ($result[0] as $index => $group_string)
            {
                //replace the first or next pattern match with a replaceable token
                $customContent = preg_replace('/(\{\*)(.*?)(\*\})/', '{#'.$index.'#}', $customContent, 1);

                $words = explode('|', $result[2][$index]);

                //clean and trim all words
                $finalPhrase = array();
                foreach ($words as $word)
                {
                    if (preg_match('/\S/', $word))
                    {
                        $word = preg_replace('/{%keyword%}/i', $keyword, $word);
                        $finalPhrase[] = trim($word);
                    }
                }

                $finalPhrase = $finalPhrase[rand(0, count($finalPhrase) - 1)];

                //now inject it back to where the token was
                $customContent = str_ireplace('{#' . $index . '#}', $finalPhrase,    $customContent);
            }

            $this->_setContentStatus(self::CONTENT_STATUS_PASSED);
        }
    }

    return $customContent;
}
}

正则表达式是这样的请求括号

   {*spin1|spin2|spin3*}

这是上面代码段中的正则表达式

   if (preg_match_all('/({\*)(.*?)(\*})/', $customContent, $result))

   $customContent = preg_replace('/(\{\*)(.*?)(\*\})/', '{#'.$index.'#}', $customContent, 1);

我想删除*格式允许{spin1 | spin2 | spin3}与大多数微调器更兼容,

我尝试了一些我在网上找到的正则表达式 我试图从两个正则表达式中删除*而没有结果

非常感谢你的帮助

1 个答案:

答案 0 :(得分:0)

删除\*而非* - Lucas Trzesniewski