jano

Рейтинг
169
Регистрация
06.07.2011
LovelAss:

$files = array(
'mashina.txt',
'mashina2.txt'
);

if (is_array($files) && count($files)) {
foreach ($files as $file) {
if (!file_exists($file)) {
continue;
}
$data = file($file);
if (is_array($data) && count($data)) {
$tmp_arr = array();
foreach ($data as $key => $value) {
if (preg_match('#([0-9])#', $value, $matches)) {
$tmp_arr[$key] = $matches[1];
}
}
if (count($tmp_arr)) {
asort($tmp_arr);
$new_arr = array();
foreach ($tmp_arr as $key => $value) {
$new_arr[] = $data[$key];
}
if (@file_put_contents($file, implode('', $new_arr))) {
echo 'File '.$file.' - SUCCESS<br>';
} else {
echo 'File '.$file.' - ERROR<br>';
}
}
unset($data);
}
}
}

Спасибо. Скрипт рабочий, но выводит не верно.

123

187

1

190

11

а должен вывести вот так:

1

11

123

187

190

SeVlad:
Чит внимательнее - удалить начальные цифры.
katera4 ->4katera4->katera4

Как-то так (возможно требует доработки):
Найти
(.*)(\d)

заменить на
\2\1\2

(не уверен какой синтаксис в замене поддерживает n++)

Зачем удалять цифры, если они нужны те, которые стоят там? :)

Мне нужно рассортировать грубо говоря дески по цифрам: от 1 до 1000

Сначала скрипт ищет деск в котором есть цифра 1 и ставит его ан первое место, далее ищет 2, на второе и т д

SeVlad:
Скопировать цифры в начало строки, отсортировать, удалить.

В любом блокноте с поддержкой регулярок.

Удалять ничего не нужно, только в порядке возрастания рассортировать строки, в которых есть цифры:

1

2

3

4

В notepad++ с помощью регулярных выражений - не получается.

Может как-то на php?

дани мапов:
Вместо первой строки
$string = file_get_contents('main.html');

Вместо последней строки
file_put_contents('newmain.html', $newstring);

Отлично. Огромное спасибо! :)

PROGRAMMATOR:
file_get_contents
file_put_contents

Спасибо.

Cкажи пожалуйста куда эти строчки вставить.

дани мапов:
PHP > 5.3



$string = "Test: mashina, mashina, mashina end";

$index = 0;
$newstring = preg_replace_callback(
'@mashina@',
function($match) use (&$index) {
$index++;
return ($match[0] . $index);

},
$string
);
echo $newstring;

В ssh ввёл команду: php done.php (в done.php - код, вывело, но это ведь никак не приспособишь)

Дело в том, что все изменения нужно сделать в файлайх.html

Нужно как-то в поле внести название файла в котором будет замена (zamena.html к примеру). Далее уже к слову mashina там должны быть дозаписаны цифры.

proksey-net:

echo implode("\n", $text);

Спасибо!

Не подскажешь, может есть ещё более простой вывод последовательных цифр после слов в php?

К примеру раскиданы в документе слова key,...key,..key - нужно заменить последовательно key1,key2,key3

La5:
судя по всем page.html, это скрипт какой-то, тогда тебе надо его изменить вот по такой логике:

<?php


function isPageExists($pageId)
{
$isExists = false;

// тут у тебя проверка существует такая страница или нет

return $isExists;
}

// генерирует путь к файлу кеша
function getCacheFilePath($pageId)
{
return 'cache/'.$pageId;
}

// проверяет есть ли страница в кеше
function isPageInCache($pageId)
{
$cacheFilePath = getCacheFilePath($pageId);
return is_readable($cacheFilePath);
}

// возвращает содержимое файла кеша
function getPageFromCache($pageId)
{
$cacheFilePath = getCacheFilePath($pageId);
return file_get_contents($cacheFilePath);
}

// сохраняет страницу в кеш
function savePageToCache($pageId, $html)
{
$cacheFilePath = getCacheFilePath($pageId);
$dir = dirname($cacheFilePath);
if (!is_dir($dir)) mkdir($dir, 0755, TRUE);
return file_put_contents($cacheFilePath, $html);
}

// генерируем уникальный Id страницы
$pageId = md5(json_encode($_REQUEST));

if (!isPageExists($pageId))
{
// страница не существует, значит надо кешировать
if (isPageInCache($pageId))
{ // если есть страница в кеше

// читаем её из кеша
$html = getPageFromCache($pageId);

}
else
{ // Если страницы нет в кеше

// генерируем страницу
ob_start();
?>
Some page contents, current time <?=date('H:i:s');?>
<?php
$html = ob_get_clean();

// сохраняем в кеш
savePageToCache($pageId, $html);

}
echo $html; // и выводим
}

Огромное спасибо, протестирую.

La5:
Чего-то не понятна мне твоя задумка, в текущих исходных данных, у тебя все-все запросы перенаправляются на страницу page.html, зачем тебе её кешировать? Ну, т.е. это не мое дело наверно, но вместо того чтобы просто отдать страницу page.html, ты хочешь запустить скрипт, который проверит, есть ли она в кеше, если нет, создать её копию, и потом отдать. Другими словами, хочешь сделать больше нагрузку, чем она есть.

Либо ты что-то не дописал про mod_rewrite и правила которые там.

В page.html идёт генерация десков и кейвордов. Что бы каждый раз поисковику не открывалась страница с новым контентам, хотел бы я кэшировать не существующие страницы.

Ilya74:
Обратите внимание, что на всех Eco конфигурациях диски 5.4K RPM, что очень не очень. Если ожидается интенсивная работа с диском, лучше такие диски не брать, будет медленно.

Спасибо, взял ssd уже.. )

Всего: 424