2016-07-28 3 views
1

У меня есть строка:Удалить элемент в массиве

Это не большое дело

Я хочу изменить его

Это not_big сделку

Так далеко, я пробую этот код, но возвращаю «неопределенное смещение: $ 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; 
} 

Вы можете мне помочь? спасибо: ')

+1

Почему вы не можете использовать str_replace для этого? – rad11

ответ

0

Почему не просто preg_replace?

$str = "It's not big deal"; 

echo preg_replace("/\b(not)\s+/i", "$1_", $str); // It's not_big deal 
0

Если вы уже используете регулярное выражение, зачем вам разбить строку на массив слов? вы можете просто совместить «нет» и заменить его «not_». почему слишком сложно усложнять ситуацию?

program, похоже, работает нормально. но это вызовет проблему, если слово «нет» является последним словом в строке. потому что в этом случае $y выйдет из диапазона массивов.

Смежные вопросы