[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: помогите поправить скрипт
Страницы: 1, 2
BOB222
программа phpDesigner нашла ошибку в строке 32
а на сайте codepad показало ошибку
Parse error: syntax error, unexpected T_VARIABLE on line 32

$strLink = "<a href="%22%20.%20$arrKuda[$i]%20.%20%22" target="_blank" class="mylinks">" . $arrTextWords[$i] . "</a>";

как решить это?
inpost
$var = ... ты инициализируешь переменную.
Далее пишешь ОТКРЫТЬ КАВЫЧКИ и записать всё в переменную... а потом в центре ЗАКРЫВАЕШЬ КАВЫЧКУ... Как системе понимать цифры после закрытой кавычки?
Используй одинарные кавычки. А если они дублируются - экранизируй кавычки.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
inpost
$var = '<div style="display:none;">';
$var = "<div style=\"display:none;\">";


_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
BOB222
хорошо. попробую переделать строку.
BOB222
спасибо. ошибка исчезла.
на другой строке ошибка

foreach($arrLinkStrings as $strString) {

Warning: Invalid argument supplied for foreach() on line 15
Предупреждение: неверный аргумент поставляются для Еогеасп () в строке 15
inpost
значит там не массив smile.gif

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
1111
У этого скрипта другая беда, даже если Вы правильно определите подключение к текстовым базам, он все равно не будет видеть ссылки дальше второго уровня, т.е. ссылка типа http://вашсайт.ru/1.html будет работать, но если глубина вложения 3 или 4 то скрипт отказывается работать.

похоже ошибка гдето здесь.
// ищем в массиве урл страницы, на которой мы находимся---------------

$strLinks = "";
Guest
[QUOTE=BOB222,17.11.2012 - 21:55]программа phpDesigner нашла ошибку в строке

$strLink = "<a href="%22%20.%20$arrKuda[$i]%20.%20%22" target="_blank" class="mylinks">" . $arrTextWords[$i] . "</a>";



$strLink = "<a href=" . $arrKuda[$i].">" . $arrTextWords[$i]."</a>";

или

$strLink = "<a href='" . $arrKuda[$i] . "' target=_blank>" . $arrTextWords[$i]."</a>";

в зависимости от того открывать ссылку в том же окне или новом.
Guest
У меня работающий скрипт выглядит вот так:

<?
//$TheUrl = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; // вызванная страница
$TheUrl = "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];

// считываем в массив файл со списком ссылок------------------------------------------------
// out.txt
// формат "урл откуда ссылка=урл куда ссылка=текст ссылки=текст блока вокруг ссылки

$arrLinkStrings = file ("reg/linkator/out.txt");

$arrOtkuda = array();
$arrKuda = array();
$arrTextWords = array();
$arrTextBlock = array();

foreach($arrLinkStrings as $strString) {
// list($arrOtkuda[],$arrKuda[],$arrTextWords[],$arrTextBlock[]) = split("~",$strString);
list($arrOtkuda[],$arrKuda[],$TextBlock) = split("~",$strString);
$arrTextBlock[]=str_replace("%", "", $TextBlock);
list($do,$arrTextWords[],$posle) = split("%",$TextBlock);
}

// считываем шаблон вывода блока ссылок
// tmpl_links_block.txt
$tmplLinksBlock = file_get_contents("reg/linkator/tmpl_links_block.txt");

// считываем шаблон вывода одной ссылки
// tmpl_link.txt
$tmplLink = file_get_contents("reg/linkator/tmpl_link.txt");

// ищем в массиве урл страницы, на которой мы находимся--------------------------------------------

$strLinks = '';

for($i = 0; $i <= (count($arrOtkuda)-1); $i++) {
$arrOtkuda[$i]=trim($arrOtkuda[$i]);
$arrKuda[$i]=trim($arrKuda[$i]);
$arrTextWords[$i]=trim($arrTextWords[$i]);
$arrTextBlock[$i]=trim($arrTextBlock[$i]);


if ($TheUrl==$arrOtkuda[$i] OR $TheUrl==$arrOtkuda[$i]."index1.html" OR $TheUrl."index1.html"==$arrOtkuda[$i]) { //главная страница
// $strLink = "<a href=" . $arrKuda[$i].">" . $arrTextWords[$i]."</a>";
$strLink = "<a href='" . $arrKuda[$i] . "' target=_blank>" . $arrTextWords[$i]."</a>";

if( strlen( $arrTextBlock[$i]) > 1) {
// если текстовый блок не пустой
$strLink = str_replace($arrTextWords[$i], $strLink, $arrTextBlock[$i]);
}
$strLink = str_replace("-item-", $strLink, $tmplLink);
$strLinks = $strLinks . $strLink;
}
}

// отдаем список ссылок
$strLinks = str_replace("-items-", $strLinks, $tmplLinksBlock);
echo($strLinks);
?>


Но все равно ссылки на файлы 3 и 4 уровней не проставляет
Guest
Ну вот кажется справился со скриптом.

<?php
$TheUrl = "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']; // вызванная страница


// считываем в массив файл со списком ссылок------------------------------------------------
// out.txt
// формат "урл откуда ссылка=урл куда ссылка=текст ссылки=текст блока вокруг ссылки

$arrLinkStrings = file ("/www/designba/www/htdocs/linkator/out.txt");

$arrOtkuda = array();
$arrKuda = array();
$arrTextWords = array();
$arrTextBlock = array();

foreach($arrLinkStrings as $strString) {
// list($arrOtkuda[],$arrKuda[],$arrTextWords[],$arrTextBlock[]) = split("~",$strString);
list($arrOtkuda[],$arrKuda[],$TextBlock) = split("~",$strString);
$arrTextBlock[]=str_replace("%", "", $TextBlock);
list($do,$arrTextWords[],$posle) = split("%",$TextBlock);
}

// считываем шаблон вывода блока ссылок
// tmpl_links_block.txt
$tmplLinksBlock = file_get_contents("/www/designba/www/htdocs/linkator/tmpl_links_block.txt");

// считываем шаблон вывода одной ссылки
// tmpl_link.txt
$tmplLink = file_get_contents("/www/designba/www/htdocs/linkator/tmpl_link.txt");

// ищем в массиве урл страницы, на которой мы находимся--------------------------------------------

$strLinks = '';

for($i = 0; $i <= (count($arrOtkuda)-1); $i++) {
$arrOtkuda[$i]=trim($arrOtkuda[$i]);
$arrKuda[$i]=trim($arrKuda[$i]);
$arrTextWords[$i]=trim($arrTextWords[$i]);
$arrTextBlock[$i]=trim($arrTextBlock[$i]);


if ($TheUrl==$arrOtkuda[$i] OR $TheUrl==$arrOtkuda[$i]."index1.html" OR $TheUrl."index1.html"==$arrOtkuda[$i]) { //главная страница

$strLink = "<a href='".$arrKuda[$i]."'>".$arrTextWords[$i]."</a>";

if( strlen( $arrTextBlock[$i]) > 1) {
// если текстовый блок не пустой
$strLink = str_replace($arrTextWords[$i], $strLink, $arrTextBlock[$i]);
}
$strLink = str_replace("-item-", $strLink, $tmplLink);
$strLinks = $strLinks . $strLink;
}
}

// отдаем список ссылок
$strLinks = str_replace("-items-", $strLinks, $tmplLinksBlock);
echo($strLinks);
?>



Строка вывода ссылок выглядит так:

<?php include ("/www/designba/www/htdocs/linkator/generator_block_links.php")?>

Теперь работает со всеми страницами сайта.
BOB222
Спасибо за труды. попробую установить.
borland
Как вариант, попробуйте через $_SERVER['DOCUMENT_ROOT'] проверить все пути.
Guest
Цитата (BOB222 @ 20.01.2013 - 14:52)
Спасибо за труды. попробую установить.

Есть еще одна неувязочка в скрипте.
Файл generator_out_file.php который создает базу ссылок объединяя данные из файла page.txt и links.txt почему то прекращает создание блоков ссылок в файле out.txt на том количестве ссылок которое находится в файле links.txt, таким образом мне пришлось мне пришлось четыре раза продублировать ссылки в этом файле.
Guest
В инструкции к скрипту сказано что файл generator_out_file.php необходимо запустить только один раз для генерации ссылок, на самом деле его надо запускать раз десять подряд (в зависимости от количества ссылок, у меня их 180), чтобы он просмотрел всю базу и убрал повторы.
Guest
Файл generator_out_file.php, генерирует базу ссылок out.txt,


<?
error_reporting (E_ALL); //error_reporting(0);
$inpage=1;

//обьявляем файлы
$page_file=file('page.txt'); //страницы
$links_file=file('links.txt'); //ссылки
$fd=fopen('out.txt',"a"); //выход
$outfile = join($fd, file('out.txt'));

$page_count_start=count($page_file);
$links_count_start=count($links_file);
$page_count=$page_count_start;
$j=0;

$b = array();

while($key!=1) {

$i = array_rand ($links_file);

preg_match('!<a href="(.*?)">(.*?)</a>!si',$links_file[$i],$tmp[$i]);
$url=$tmp[$i][1];
$keywords=$tmp[$i][2];

if ($page_count>0){
echo' страницы есть <br>';
$page_number=$page_file[$j];
//$j++;
$page_count=$page_count-1;
}else{
echo' закончились страницы, обходим их заново <br>';
$j=0;
$page_count=$page_count_start;
$page_number=$page_file[$j];
//$j++;
$page_count=$page_count-1;
}
$page_out=trim($page_number).'~'.trim($url).'~%'.trim($keywords).'%';
$url_out=$url.'~%'.$keywords.'%';
$url_lost='~%%';

if(!stristr($url_out,$url_lost)){

if (stristr($outfile,$url_out)){echo' у нас повтор ссылки на страницах ';
echo'.. удаляем ссылку.. ';unset($links_file[$i]);

if($links_file<=$b){echo' упс все, ссылки закончились ';$key='1';}
else{echo' еще есть ссылки.. ';$i = array_rand ($links_file);}}else{

$page_out=trim($page_number).'~'.trim($url).'~%'.trim($keywords).'%';
fwrite($fd, $page_out."\r\n");
unset($links_file[$i]);
if($links_file>=$b){
$i = array_rand ($links_file);
$j++;
}}}else{$key='1';}}
fclose($fd);
?>
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.