|
| Дата |
|
USD/RUB | 90.1887 | BTC/USD | 68066.1754 |
|
|
|
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии. |
07.06.2019, 01:51
|
#1
|
Senior Member
Регистрация: 03.10.2010
Сообщений: 1,712
Бабло: $296955
|
Ищу автоматическое удаление битых ссылок в HTML
Ищу софт, который сможет прочекать статику на 404 ссылки в коде (ссылки на несуществующие внутряки сайта) и удалить их, оставив текст (анкоры). Если то же самое еще с картинками - прям вообще супер.
Может кто-то видел такое в природе?
Погуглил - ничего не нашел. Максимум под WP плагин, который вроде как находит такие ссылки и предлагает с ними что-то сделать (удалить, редактировать и еще че-то, я не вникал особо).
Или без кодинга тут никак не обойтись? По идее, задачка типовая для нас и я надеялся сходу че-нить найти...
|
|
|
07.06.2019, 04:41
|
#2
|
Tomorrow
Регистрация: 22.01.2013
Адрес: Баден-Баден
Сообщений: 1,451
Бабло: $236030
|
Проверить сайт Site Analyzer'ом на 404 ошибки, выкачать сайт на винт и править ссылки прогой Text Replacer'ом на нужные тебе ссылки или просто без ссылок.
http://tr.infortech.ru/
__________________
|
|
|
07.06.2019, 11:09
|
#3
|
Senior Member
Регистрация: 03.10.2010
Сообщений: 1,712
Бабло: $296955
ТС -->
|
ТС
Цитата:
Сообщение от Creolabs
Проверить сайт Site Analyzer'ом на 404 ошибки, выкачать сайт на винт и править ссылки прогой Text Replacer'ом на нужные тебе ссылки или просто без ссылок.
http://tr.infortech.ru/
|
это надо поштучно каждую ссылку в этой проге задать для удаления? а если таких ссылок 50-100? Такое нужно автоматизировать, а не руками сидеть 2 часа удалять.
|
|
|
07.06.2019, 11:19
|
#4
|
Шучу на половину
Регистрация: 23.01.2011
Сообщений: 5,834
Бабло: $1167860
|
только полуручным способом по этапно задачам, готового не попадалось
как альтернатива, еще можно
screamingfrog, обходит указанный сайт репортит по битым ссылкам
notepadd++ замена в файлах
|
|
|
07.06.2019, 11:26
|
#5
|
Senior Member
Регистрация: 03.10.2010
Сообщений: 1,712
Бабло: $296955
ТС -->
|
ТС
Цитата:
Сообщение от Creolabs
Проверить сайт Site Analyzer'ом на 404 ошибки, выкачать сайт на винт и править ссылки прогой Text Replacer'ом на нужные тебе ссылки или просто без ссылок.
http://tr.infortech.ru/
|
это надо поштучно каждую ссылку в этой проге задать для удаления? а если таких ссылок 50-100? Такое нужно автоматизировать, а не руками сидеть 2 часа удалять.
|
|
|
07.06.2019, 11:34
|
#6
|
Шучу на половину
Регистрация: 23.01.2011
Сообщений: 5,834
Бабло: $1167860
|
только полуручным способом по этапно задачам, готового не попадалось
как альтернатива, еще можно
гуглить готовое
заказать кодерам
заказать неграм
|
|
|
07.06.2019, 12:35
|
#7
|
Member
Регистрация: 05.03.2008
Сообщений: 70
Бабло: $16285
|
PHP код:
<?php
// ПЕРЕД ВЫПОЛНЕНИЕМ - !!!!!BACKUP
//сработает если url на сайте абсолютные или полные (/imgs/1.jpg или http://site.com/imgs/1.jpg)
$folder="/var/www/html/site_folder"; //абсолютный путь к папке с сайтом без слэша на конце. Если винда d:\\sites\\site
$site=array('http://site.com','http://www.site.com','https://site.com','http://www.site.com'); //возможные url сайта без слэша на конце
$index=array('index.html','index.htm','index.php'); // возможные индексы
$iCnt=sizeof($index);
$allPath=array();
$nPath=array();
$it = new RecursiveDirectoryIterator($folder);
$display = Array ( 'html', 'htm' );
foreach(new RecursiveIteratorIterator($it) as $file)
{
$ext = pathinfo($file, PATHINFO_EXTENSION);
$fName = pathinfo($file, PATHINFO_FILENAME).'.'.$ext;
$fPath=str_replace($folder,'',$file);
$plen=strlen($fPath);
if($fPath[($plen-1)]=='.') continue;
$nixPath=str_replace('\\','/',$fPath);
$allPath[]=$nixPath;
if($nixPath[($plen-1)]=='/') {
$a=0;
while($a<$iCnt) {
$allPath[]=$nixPath.$index[$a];
$a++;
}
}
if(in_array($fName,$index)) {
$allPath[]=str_replace($fName,'',$nixPath);
}
if(in_array($ext,$display)) {
$nPath[]=$file;
}
}
//print_r($allPath);
while(list(,$val)=each($nPath)) {
echo $val."\n";
$isChng=false;
$data=file_get_contents($val);
$preg=preg_match_all("/<a[^>]+href\s*=\s*[\"']?([^\s>\"']+)[^>]*>(.*?)<\/a[^>]*>/is",$data,$out);
if(!empty($preg)) {
$a=0;
$count=sizeof($out[1]);
while($a<$count) {
$out[1][$a]=str_replace($site,'',$out[1][$a]);
if($out[1][$a][0]=='/') {
if(!in_array($out[1][$a],$allPath)) {
echo $out[1][$a]."\n";
$data=str_replace($out[0][$a],$out[2][$a],$data);
$isChng=true;
}
}
$a++;
}
}
$preg=preg_match_all("/<img[^>]+src\s*=\s*['\"]?([^\s>\"']+[^>]*>/is",$data,$out);
if(!empty($preg)) {
$a=0;
$count=sizeof($out[1]);
while($a<$count) {
$out[1][$a]=str_replace($site,'',$out[1][$a]);
if($out[1][$a][0]=='/') {
if(!in_array($out[1][$a],$allPath)) {
echo $out[1][$a]."\n";
$data=str_replace($out[0][$a],'',$data);
$isChng=true;
}
}
$a++;
}
}
if($isChng) {
$fp=fopen($val,'wb');
fwrite($fp,$data);
fclose($fp);
}
}
?>
|
|
|
07.06.2019, 14:37
|
#8
|
Senior Member
Регистрация: 03.10.2010
Сообщений: 1,712
Бабло: $296955
ТС -->
|
ТС
OfeatO, удалит битые ссылки? спасибо за код.
зы. модерам - база форума глючила и получилось дважды запостить одно и то же. 5й пост тут можно удалить.
|
|
|
07.06.2019, 15:11
|
#9
|
Member
Регистрация: 05.03.2008
Сообщений: 70
Бабло: $16285
|
Удалит ссылки (внутряки) и картинки. Но только если они прописаны абсолютными путями или с url сайта.
|
|
|
07.06.2019, 15:50
|
#10
|
сыроед
Регистрация: 01.10.2015
Сообщений: 15,874
Бабло: $1862575
|
шо это
Цитата:
while(list(,$val)=each($nPath))
|
list() так не сработает
|
|
|
|