Вы можете сделать это так:
if(substr($asd, 3, 1) !== 'J')
{
$asd = substr($asd, 0, 3)."J".substr($asd, 3);
}
Если вы точно не знаете, что строка $ asd длиннее трех символов, вам также следует проверить длину строки перед:
if(strlen($asd) > 3 && substr($asd, 3, 1) !== 'J')
{
$asd = substr($asd, 0, 3)."J".substr($asd, 3);
}
Наконец, вышеописанный метод хорошо работает как для отдельных символов, так и для нескольких последовательностей символов, но если вам нужен только один символ, вы можете просто использовать индекс строки, чтобы проверить, есть ли символ, например:
if(strlen($asd) > 3 && $asd[3] !== 'J')
{
$asd = substr($asd, 0, 3)."J".substr($asd, 3);
}
Если вам нужно делать это каждые 3 символа, просто поместите это в цикл:
$pos = 0;
while(true)
{
// go to the position of the next character of interest
$pos += 3;
// if the next pos is past the end of the string break out of the loop
if(strlen($asd) <= $pos)
break;
if($asd[$pos] !== 'J')
{
$asd = substr($asd, 0, $pos)."J".substr($asd, $pos);
$pos++;
}
}
Примечание
Если строка, которую вы редактируете таким образом, велика, и число вхождений, которые необходимо изменить, также довольно велико, вы можете оптимизировать алгоритм так, чтобы он сначала находил позиции, в которые необходимо вставить символы, а затем разбивает оригинал строка в массив подстрок, а затем объединяет их все вместе, используя управляющий символ в качестве соединителя, используя array_join