Скрипт замены на php - Форум успешных вебмастеров - GoFuckBiz.com
 
 
Форум успешных вебмастеров - GoFuckBiz.com

  Форум успешных вебмастеров - GoFuckBiz.com > Бизнес-решения > Скрипты, программы и технические решения
Дата
USD/RUB74.3823
BTC/USD58125.1955
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии.

Закрытая тема
Опции темы Опции просмотра
Старый 23.01.2018, 18:40   #1
lebaol
Member
 
Регистрация: 14.06.2015
Сообщений: 80
Бабло: $16320
По умолчанию Скрипт замены на php

нужен 2-ой или может третий даже скрипт замены.

есть папка, в которой лежит много .html файлов

есть ссылки нерабочие (сгенерированные по шаблону) внутри (ошибка 404)

например,

<li><a href="/main/keyword--1.html">keyword 1</a></li>
<li><a href="/main/keyword--2.html">keyword 2</a></li>
<li><a href="/main/keyword--2.html">keyword 2</a></li>

список этих сслылок лежит в links.txt

нужно в .html файлах, где попадается любая нерабочая ссылка по шаблону (взятая из links.txt) заменить на одну рабочую ссылку по такому же шаблону (хотя это не столь важно), например,

<li><a href="/main/working-link-for-this-keyword.html">working link for this keyword</a></li>

ссылку, на которую нужно заменить могу указать в коде =)

p.s. incognito, который меня два раза уже выручал с похожими скриптами, я писал тебе в личку и в скайп или аську, но ответа вроде не было - можна с вами как-то связаться или вы не работаете на непостоянной основе?

p.s. так же интересуют услуги программиста для доработки движка сайта на python используя mod_wsgi и еще нужен php программист для разовой работы.

спасибо большое
lebaol вне форума  
Старый 24.01.2018, 13:50   #2
Burg
Юниор
 
Регистрация: 07.01.2018
Сообщений: 19
Бабло: $4130
По умолчанию

- есть ссылки нерабочие (сгенерированные по шаблону) внутри (ошибка 404)

это внутренние ссылки на одном домене и тебе нужно их все запросить и проверить на 404 заголовок или они уже проверены и просто являются признаками замены?

- любая нерабочая ссылка по шаблону

т.е. в хтмл файле ссылки и тэги точно так же выглядят, как и в файле списка тхт?

- заменить на одну рабочую ссылку по такому же шаблону

т.е. одна аналогичная строка для замены во всех хтмл файлах?

если все так, то накидаю - скрипт простенький
Burg вне форума  
Старый 24.01.2018, 15:44   #3
lebaol
Member
 
Регистрация: 14.06.2015
Сообщений: 80
Бабло: $16320
ТС -->
автор темы ТС По умолчанию

все намного проще.

гугл показал мне нерабочие ссылки (таких страниц нету).

у меня есть скрипт, который ищет кусок кода во всех файлах в одной папке и зменяет его на другой кусок кода.

таким образом, я могу поменять нерабочие ссылки на рабочую, но придется делать это где-то 250 раз.

что нужно? нужно автоматизировать это. тоесть с тхт файла брать код (одна нерабочая ссылка в одной строке), искать этот код на всех страницах в одной папке и заменять на какой-то код (можна один и тот же - это будет рабочая ссылка). и так со всеми строчками с тхт файла проделать.

спасибо большое
lebaol вне форума  
Старый 25.01.2018, 16:59   #4
Burg
Юниор
 
Регистрация: 07.01.2018
Сообщений: 19
Бабло: $4130
По умолчанию

PHP код:
<?php

$input_file
="./inputfilelinks.txt";
$dir "./testdir/";
$replace_content="test_string";

Error_Reporting(E_ALL & ~E_NOTICE);
$scrypt_path=dirname(__FILE__);
chdir($scrypt_path);

echo(
" STARTED ... <br><br>\r\n");

$input_links_arr=array();
if(
is_file($input_file)) {
    if(
$file=fopen($input_file,'r')) { while(!feof($file)) { $str=trim(fgets($file)); if($str!='') { $input_links_arr[]=$str; } } fclose($file); }
    else{  exit(
"<br> Can't open input file links: $input_file <br>"); }
}
else{  exit(
"<br> This is not a file: $input_file <br>"); }

if (
is_dir($dir)) {
    if (
$dh opendir($dir)) {
        while ((
$file_name readdir($dh)) !== false) {
        
//    echo "Name: $file_name : type: " . filetype($dir . $file_name) . "<br>\r\n";
        
$exten=substr($file_namestrrpos($file_name'.') + 1);
        if(
$exten=='html'){
            echo(
"work with file: ".$dir.$file_name."<br>\r\n");
            
$content=file_get_contents($dir.$file_name);
            
$chan=0;
            foreach(
$input_links_arr as $shablon) {
                if(
stristr($content,$shablon)) { str_replace($shablon,$replace_content,$content); $chan=1; }  }
                if(
$chan==1) { file_put_contents($dir.$content);
                 echo(
"Content was changed <br>\r\n"); }
                 else { echo(
"Nothing to change <br>\r\n"); }
            }
        else { echo(
"File is not a html: ".$dir.$file_name." => ignored <br>"); }
        }
        
closedir($dh);
    }
    else { echo(
"<br> Can't open DIRECTORY: $dir <br>"); }
}
else { echo(
"<br> Path is not a DIRECTORY: $dir <br>"); }

echo(
"<br><br>\r\n END! <br><br>\r\n");

?>
как-то так
Burg вне форума  
Старый 26.01.2018, 14:30   #5
lebaol
Member
 
Регистрация: 14.06.2015
Сообщений: 80
Бабло: $16320
ТС -->
автор темы ТС По умолчанию

спасибо большое, выбило, правда, такое:
PHP Parse error: syntax error, unexpected '">working link for this keyword</a></' (T_CONSTANT_ENCAPSED_STRING) in /home/admin/web/domain.com/public_html/change.php on line 5

в настройках пхп проблема у меня? спасибо большое
lebaol вне форума  
Старый 26.01.2018, 14:51   #6
malishka
Ебланнед
 
Регистрация: 28.11.2009
Сообщений: 875
Бабло: $257825
По умолчанию

Нет в скрипте ошибка.
__________________
Edu-Revenue.com – самая прибыльная партнерка в нише эссе. Платят до 75% от каждой новой продажи и до 35% за ребил!
malishka вне форума  
Старый 26.01.2018, 15:40   #7
Burg
Юниор
 
Регистрация: 07.01.2018
Сообщений: 19
Бабло: $4130
По умолчанию

Цитата:
Сообщение от malishka Посмотреть сообщение
Нет в скрипте ошибка.
это не ошибка в скрипте, внимательнее прочитайте синтаксис - когда ТС забил шаблон - не заэкранировал кавычки (если есть - еще и спецсимволы нужно) обратным слэшем - ничего страшного

Тс перед двойной кавычкой внутри своей строки поставь везде обратный слэш
или замени в коде " на '

или строку конкретную сюда приведи с http://test.com, я покажу
Burg вне форума  
Старый 26.01.2018, 15:49   #8
lebaol
Member
 
Регистрация: 14.06.2015
Сообщений: 80
Бабло: $16320
ТС -->
автор темы ТС По умолчанию

спасибо большое)

исправил

Nothing to change <br>
File is not a html: ./test/.. => ignored <br>work with file: ./test/keyword1.html<br>
Nothing to change <br>
work with file: ./test/keyword-to-change.html<br>
PHP Warning: file_put_contents() expects at least 2 parameters, 1 given in /home/admin/web/domain.com/public_html/change.php on line 31
Content was changed <br>
File is not a html: ./test/. => ignored <br><br><br>
END! <br><br>

еще такое (ничего не поменяло, хотя права на папку тест поставил 777)
lebaol вне форума  
Старый 28.01.2018, 15:53   #9
Burg
Юниор
 
Регистрация: 07.01.2018
Сообщений: 19
Бабло: $4130
По умолчанию

мой косяк, на скорую руку накидал, сейчас проверил - замена работает

PHP код:
<?php

$input_file
="./inputfilelinks.txt";
$dir "./testdir/";
$replace_content="<shablon>sh_repl</shab>";

Error_Reporting(E_ALL & ~E_NOTICE);
$scrypt_path=dirname(__FILE__);
chdir($scrypt_path);

echo(
" STARTED ... <br><br>\r\n");

$input_links_arr=array();
if(
is_file($input_file)) {
    if(
$file=fopen($input_file,'r')) { while(!feof($file)) { $str=trim(fgets($file)); if($str!='') { $input_links_arr[]=$str; } } fclose($file); }
    else{  exit(
"<br> Can't open input file links: $input_file <br>"); }
}
else{  exit(
"<br> This is not a file: $input_file <br>"); }

if (
is_dir($dir)) {
    if (
$dh opendir($dir)) {
        while ((
$file_name readdir($dh)) !== false) {
        
//    echo "Name: $file_name : type: " . filetype($dir . $file_name) . "<br>\r\n";
        
$exten=substr($file_namestrrpos($file_name'.') + 1);
        if(
$exten=='html'){
            echo(
"work with file: ".$dir.$file_name."<br>\r\n");
            
$content=file_get_contents($dir.$file_name);
            
$chan=0;
            foreach(
$input_links_arr as $shablon) {
                if(
strstr($content,$shablon)) { $content_rep=str_replace($shablon,$replace_content,$content); $chan=1; }  }
                if(
$chan==1) { file_put_contents($dir.$file_name,$content_rep);
                 echo(
"Content was changed <br>\r\n"); }
                 else { echo(
"Nothing to change <br>\r\n"); }
            }
        else { echo(
"File is not a html: ".$dir.$file_name." => ignored <br>"); }
        }
        
closedir($dh);
    }
    else { echo(
"<br> Can't open DIRECTORY: $dir <br>"); }
}
else { echo(
"<br> Path is not a DIRECTORY: $dir <br>"); }

echo(
"<br><br>\r\n END! <br><br>\r\n");

?>
Burg вне форума  
Старый 30.01.2018, 19:34   #10
lebaol
Member
 
Регистрация: 14.06.2015
Сообщений: 80
Бабло: $16320
ТС -->
автор темы ТС По умолчанию

спасибо большое, Burg

а можна ваш контакт в личку, плиз

желательно скайп (для сообщений) или аську (если кто-то юзает еще)
lebaol вне форума