Как в php сделать замену чего-то на случайное число в каждой строке текста?
Опубликовано Nov 9, 06:01 PM, секция Статьи, категория КодингКод замены одной строки другой строкой со случайным числом
Вот, собственно, листинг (пришлось удалить радующие глаз пустые строки – читать файл из броузера стало сложнее):
P.S. Кто не любить читать в броузере большие листинги, можете скачать файл отсюда – tmp.php.txt
<?
/**************
function replaces "h3. " with "h3(#_number_). " where _number_
iterates from 0 to n every found "h3. " string.
***************/
// opening file with strings
$filename = "tmp1.txt";
$handle = fopen($filename, "rb");
$text = fread($handle, filesize($filename));
fclose($handle);
// make array from file - be careful with new-line chars in your file editor
$new_line="\n";
$text = explode($new_line,$text);
// main cycle
for($i=0,$j=0; $i<count($text); $i++) {
// assign search and replace patterns
$search = 'h3. ';
$replace = 'h3(#head'.$j.'). ';
// this part looks if there was replacement - also can be rewritten to ..
// ..search $search string instead of useles replacements ;)
$text_after=str_replace($search, $replace, $text[$i]);
$comp=strcmp($text_after,$text[$i]);
echo $comp."\n";
if ($comp != 0) {// if string after replacement was changed replace string in array and iterate $j
$text[$i]=$text_after;
$j++;
}
// $text[$i]=str_replace('h3. ', 'h1. ', $text[$i]);
}
// just echo array in string
echo implode($text, $new_line);
?>
А вот с чего все начиналось (выдержка этой статьи) :
Выпала мне задачка – заменить все вхождения h3. (в конце пробел) на h3(#_xxx_). . Самое веселое то, что xxx должно быть разным каждый раз, а с regexp я не дружу совсем. Выбора было два три:
- делать все ручками
- писать скриптик
- забить на это
Сначала думал о п.1, но объем работы заставил подумать о п.2, ну а п.3 приходил в голову в процессе реализации п.2 о п.3 я и не думал – поставленные задачи для себя в почти всегда выполняю. Читаем код!
Сообщить о баге [1]
regexp – это красиво. код:
—-
function _h3($mm){ static $j=0; $j++; return “h3(#$j). “; }
$s=file_get_contents(‘tmp1.txt’);
echo preg_replace_callback(’/h3\. /i’, “_h3”, $s);
—-









