Заменить (перенос строки) плюс два случайных символа с ??в строке - PullRequest
0 голосов
/ 16 мая 2019

Прочитать в файле, заменить [linebreak char] на ??и создайте новую строку / файл

Попробовал как strtr, так и str_replace, но удалось заменить только известные символы, а не случайно.

Я уже пробовал:

$file = file_get_contents('./tel6.out', true); 
$s=strtr($file, array( '' => '??' ));

Формат источника-файл:

enter image description here

1 Ответ

0 голосов
/ 16 мая 2019
$st= "0090C9 
00AV0X7Y79T543C 
00AV0X6Y103T245C 
00AV0X60Y103T248C 
00AV0X101Y103T24B8   
00AV0X131Y103T24BB 
00AV0X10Y111T0484 
00AV0X63Y111T048C 
00AV0X133Y111T04BA   
00AV0X151Y111T04BA 
00AV0X166Y56T1499 
00AV0X167Y61T1496 
00AV0X17Y124T2491   
00AV0X11Y129T2490 
00AV0X14Y125T248F 
00AV0X14Y130T248B 
00AV0X17Y129T2496   
00AV0X10Y134T248B 
00AV0X34Y134T2491 
00AV0X10Y149T2491 
00AV0X10Y152T248B";

$ret = "";

//split the string by newline
$splitted = trim(explode("\n", $st));

foreach ($splitted as $s2)
{
    //overwrite a random char in this chunk of the string with the first '?'
    $s2[rand(0, count($s2))] = '?';         
    //overwrite a random char in this chunk of the string with the second '?'
    $s2[rand(0, count($s2))] = '?';   //this '?' may overwrite the first one

    //concatenate a string with this chunk plus '??' (that stand now instead of newline)
    $ret = $ret . $s2 . "??";
}

//show the resulting string
var_dump($ret);

Примечание: могут произойти два случайных '?' помещаются в одно и то же место для фрагмента строки, поэтому получается только один '?' в кусок строки. (Конечно, это можно предотвратить).

Не нужно знать, что символ заменяет, если вы перезаписали его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...