-2

нужна помощь, не понимаю где делаю ошибку:

введите сюда код

<?php
$string = &quot;&quot;;`введите сюда код`
$value=&quot;a1bcd&quot;; // входная строка.(efg!h)- c данным вариантом работает 
$str_rev= &quot;dcba&quot;; // перевернутая строка. Только буквы! (hgfe)- c данным вариантом работает 
//необходимо перевернуть строку задом на перёд но что цифры или символы остались на своих местах.


for ($i = 0; $i &lt; strlen($value); $i++) {
  if (empty($str_rev[$i]))  {
        $string .= $str_rev[($i-1)];
  }
        elseif (preg_match('/[a-zA-Z]/u', $value[$i])) {
                      $string .= $str_rev[$i];
                } else {
                      $string .= $value[$i];
                } 
}
echo $string;

  • Пожалуйста, исправьте вопрос, чтобы он отражал конкретную проблему с достаточным количеством деталей для возможности дать адекватный ответ. – Дух сообщества May 22 '22 at 19:01
  • вы хотите из строки a1bc_d получить d1cb_a или что? – teran May 22 '22 at 19:49
  • Приветствую, нет, необходимо из a1bcd получить d1cba. – Shumerok May 23 '22 at 07:32

1 Answers1

0

Возможно нужно так ?! И заодно немного проще будет чем у Вас

<?php

function costylMain($strMain){ $out = ""; for ($i = mb_strlen($strMain)-1; $i>=0; $i--) {

    if(preg_match('/[a-z]/i', $strMain[$i])) {
        $out .= $strMain[$i];
    }
}

return $out;

}

echo costylMain("a1bcd");

  • Приветствую, нет, необходимо из a1bcd получить d1cba. Но мой скрипт возвращает = d1baa. Cтранно другое, - так как если ввести efg!h то вернет верно = hgf!e – Shumerok May 23 '22 at 07:53
  • Так мой вариант это и делает, передаете сроку "a1bcd" на выходе "dcba". И как вы хотели, чтобы цифры не учитывались – Александр Сычёв May 23 '22 at 08:25
  • //необходимо перевернуть строку задом на перёд но что цифры или символы остались на своих местах. – Shumerok May 23 '22 at 14:08