我有一些字符串:
这不是什么大不了的事。
我想将其更改为
这不是一笔交易
到目前为止,我尝试使用此代码,但返回“undefined offset:$ y”
function checkNegation($word){
$input = strtolower($word);
$split = preg_split('/\s+/', $input);
$length = count($split);
$neg = "NOT_";
for ($x=0; $x<$length; $x++){
if (preg_match("/\bNOT\b/i",$split[$x])){
$y=$x+1;
$split[$x] = "{$neg}{$split[$y]}";
unset($split[$y]);
}
}
$word = implode(" ",$split);
return $word;
}
你可以帮帮我吗?谢谢你:')
答案 0 :(得分:0)
如果您已经使用正则表达式,为什么需要将字符串分解为单词数组?你可以匹配&#34;不是&#34;在其中并用&#34;而不是_&#34;替换它。为什么过于复杂的事情?
您的 program 似乎运行良好。但如果单词&#34;不是&#34;它会引起问题。是字符串中的最后一个单词。因为在这种情况下,$y
将超出数组范围。
答案 1 :(得分:0)
为什么不只是preg_replace
?
$str = "It's not big deal";
echo preg_replace("/\b(not)\s+/i", "$1_", $str); // It's not_big deal