|
| Дата |
|
USD/RUB | 93.4409 | BTC/USD | 64587.5967 |
|
|
|
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии. |
23.01.2018, 18:40
|
#1
|
Member
Регистрация: 14.06.2015
Сообщений: 84
Бабло: $17870
|
Скрипт замены на 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 программист для разовой работы.
спасибо большое
|
|
|
24.01.2018, 13:50
|
#2
|
Юниор
Регистрация: 07.01.2018
Сообщений: 19
Бабло: $4130
|
- есть ссылки нерабочие (сгенерированные по шаблону) внутри (ошибка 404)
это внутренние ссылки на одном домене и тебе нужно их все запросить и проверить на 404 заголовок или они уже проверены и просто являются признаками замены?
- любая нерабочая ссылка по шаблону
т.е. в хтмл файле ссылки и тэги точно так же выглядят, как и в файле списка тхт?
- заменить на одну рабочую ссылку по такому же шаблону
т.е. одна аналогичная строка для замены во всех хтмл файлах?
если все так, то накидаю - скрипт простенький
|
|
|
24.01.2018, 15:44
|
#3
|
Member
Регистрация: 14.06.2015
Сообщений: 84
Бабло: $17870
ТС -->
|
ТС
все намного проще.
гугл показал мне нерабочие ссылки (таких страниц нету).
у меня есть скрипт, который ищет кусок кода во всех файлах в одной папке и зменяет его на другой кусок кода.
таким образом, я могу поменять нерабочие ссылки на рабочую, но придется делать это где-то 250 раз.
что нужно? нужно автоматизировать это. тоесть с тхт файла брать код (одна нерабочая ссылка в одной строке), искать этот код на всех страницах в одной папке и заменять на какой-то код (можна один и тот же - это будет рабочая ссылка). и так со всеми строчками с тхт файла проделать.
спасибо большое
|
|
|
25.01.2018, 16:59
|
#4
|
Юниор
Регистрация: 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_name, strrpos($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");
?>
как-то так
|
|
|
26.01.2018, 14:30
|
#5
|
Member
Регистрация: 14.06.2015
Сообщений: 84
Бабло: $17870
ТС -->
|
ТС
спасибо большое, выбило, правда, такое:
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
в настройках пхп проблема у меня? спасибо большое
|
|
|
26.01.2018, 14:51
|
#6
|
Ебланнед
Регистрация: 28.11.2009
Сообщений: 875
Бабло: $257825
|
Нет в скрипте ошибка.
__________________
Edu-Revenue.com – самая прибыльная партнерка в нише эссе. Платят до 75% от каждой новой продажи и до 35% за ребил!
|
|
|
26.01.2018, 15:40
|
#7
|
Юниор
Регистрация: 07.01.2018
Сообщений: 19
Бабло: $4130
|
Цитата:
Сообщение от malishka
Нет в скрипте ошибка.
|
это не ошибка в скрипте, внимательнее прочитайте синтаксис - когда ТС забил шаблон - не заэкранировал кавычки (если есть - еще и спецсимволы нужно) обратным слэшем - ничего страшного
Тс перед двойной кавычкой внутри своей строки поставь везде обратный слэш
или замени в коде " на '
или строку конкретную сюда приведи с http://test.com, я покажу
|
|
|
26.01.2018, 15:49
|
#8
|
Member
Регистрация: 14.06.2015
Сообщений: 84
Бабло: $17870
ТС -->
|
ТС
спасибо большое)
исправил
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)
|
|
|
28.01.2018, 15:53
|
#9
|
Юниор
Регистрация: 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_name, strrpos($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");
?>
|
|
|
30.01.2018, 19:34
|
#10
|
Member
Регистрация: 14.06.2015
Сообщений: 84
Бабло: $17870
ТС -->
|
ТС
спасибо большое, Burg
а можна ваш контакт в личку, плиз
желательно скайп (для сообщений) или аську (если кто-то юзает еще)
|
|
|
|