PHP Как «удалить дубликаты» строка после дублирования каждого символа в строке (возврат строки)

Привет, мне нужна помощь с «дублированием» строки (AKA отменяет изменения, внесенные в строку). В моем коде PHP есть функция, которая дублирует каждый символ в строке («Hello» становится «HHeelllloo» и т. Д.). Теперь я хочу отменить это, и я не знаю, как (AKA, я хочу превратить мой «HHeelllloo» в «Привет»).

Вот код:

<?php
error_reporting(-1); // Report all type of errors
ini_set('display_errors', 1); // Display all errors
ini_set('output_buffering', 0); // Do not buffer outputs, write directly
?>

<!DOCTYPE html>
<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<title>Untitled 1</title>
</head>
<body>
<?phpif(isset($_POST["dupe"]) && !empty($_POST["input"])){
$input = $_POST["input"];
$newstring = "";

for($i = 0; $i < strlen($input); $i++){
$newstring .= str_repeat(substr($input, $i,1), 2);
}

echo $newstring;
}

if(isset($_POST["undupe"]) && !empty($_POST["input"])){

}
?>

<form method="post">
<input type="text" name="input" placeholder="Input"></input><br><br>

<button type="submit" name="dupe">Dupe</button>
<button type="submit" name="undupe">Undupe</button>
</form>

</body>
</html>

Теперь я не знаю, что делать, когда нажимаю кнопку «отменить». (Кстати, извините, если я допустил какие-либо ошибки в этом посте. Я новичок в stackoverflow.).

4

Решение

Поскольку порядок строк не изменяется, просто запустите строку и пропустите второй символ:

$undupe = '';
for($i = 0; $i < strlen($duped); $i += 2) {
$undupe .= $duped[$i]
}

например

HHeelllloo
0123456789
^ ^ ^ ^ ^
H e l l o
---------
Hello
2

Другие решения

Вы также можете использовать preg_replace а также сброс между двумя персонажами. Заменить на пустую строку.

$str = preg_replace('/.\K./', "", $str);

Это лишит любого другого персонажа. Посмотреть демо на eval.in или же regex demo at regex101


Заметка что это регулярное выражение не проверяет, совпадает ли каждый нечетный символ с четным. Проверить с ^(?:(.)\1)+$

1

Это должно заставить ваш код работать:

$newstring = "";

for($i=0, $size=strlen($input); $i < $size; $i+=2){
$newstring .= $input[$i];
}

Кроме того, на всякий случай, не забудьте отфильтровать / очистить $ _POST.

0
По вопросам рекламы [email protected]