Не присоединяется символ.

Статус
В этой теме нельзя размещать новые ответы.

dump1111

Участник
Регистрация
7 Июл 2009
Сообщения
266
Реакции
8
Вот фрагмент кода:
PHP:
if ($pos-$pos_backup<=495 and $pos!=strlen($content))
$insert_strings=$insert_strings.$check_string;
. Когда $pos=998, а $pos_backup=979, $check_string перестаёт присоединяться к $insert_strings, хотя когда $pos меньше 990-х всё работает нормально. Кто-нибудь знает в чём дело?
 
<telepate_mode on> Наверное, потому что не выполняется условие $pos != strlen($content) <telepate_mode off>
 
Вот фрагмент кода:
PHP:
if ($pos-$pos_backup<=495 and $pos!=strlen($content))
$insert_strings=$insert_strings.$check_string;
. Когда $pos=998, а $pos_backup=979, $check_string перестаёт присоединяться к $insert_strings, хотя когда $pos меньше 990-х всё работает нормально. Кто-нибудь знает в чём дело?
Когда в условиях что-то не так работает, то лучше вывести на экран данные каторые в нём сравниваются и визуально проследить что не так
PHP:
if ($pos-$pos_backup<=495 and $pos!=strlen($content)) 
$insert_strings=$insert_strings.$check_string; 
else
exit('if error- '.($pos-$pos_backup).'<=495 and '.$pos.'!='.strlen($content));
 
Если $pos равно 990, то естественно что длинна $content не равна 990, потому и не выполняется.
 
Да, пожалуй нужно привести полный код. Ту строку, в которой проблема я отметил камментарием:
PHP:
<?php
error_reporting(E_ALL & ~E_NOTICE);
//chdir ('C:/content');
create_main_page('C:/content');
function create_main_page($dir)
{
//chdir ('C:/content');
//$pos-$pos_backup!=496 or $pos!=strlen($content)
$files = glob("C:/content/*");
foreach ($files as $file)
{
if ($file == "." || $file == "..") continue;
elseif (!is_dir($file))
{
$content=file_get_contents($file);
}
}
$previos_pos=-1;
$pos_backup=0;
$pos=0;
$insert_strings=' '.'<p>';
$true=true;
While ($pos!=strlen($content))
{
While ($true)
{
While($content[$pos]!=' ' and $pos!=strlen($content))
{
$insert_strings=$insert_strings.$content[$pos];
$pos++;
}
$previos_pos=$pos;
$check_string='';
$pointer=0;
While($pointer!=2 and $pos!=strlen($content) )
{
$check_string=$check_string.$content[$pos];
$pos++;
if ($content[$pos]!=' ') $pointer=1;
elseif ($pointer==1) $pointer=2;
}

// Вот в этом месте присоединения символа не происходит
if ($pos-$pos_backup<=495 and $pos!=strlen($content))
$insert_strings=$insert_strings.$check_string;


else
{
$pos_backup=$previos_pos;
$pos=$previos_pos;
break;
}
}
$insert_strings.='<br>'."\r\n".' ';
//$i++;
$check=strlen($content);
}
//$count=strlen("\r\n");//strlen($insert_strings);
$insert_strings=substr($insert_strings,0,strlen($insert_strings)-7).'</p>'."\r\n";//' '.'</p>'."\r\n";
$main_page=<<< MAIN_PAGE
<?xml version="1.0" encoding="windows-1251"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>$title</title>
<link rel="stylesheet" type="text/css" href="screenstyle.css" media="screen" />
</head>
<body>
<div class="wholepage">
<div id="header">
<div class="mainheader">
<h2>$title</h2>
</div>
</div>
<div id="sidecontainer">
<ul class="nav">
$side_links_2uv
</ul>
</div>
<div id="content">
<h1>$title</h1>
$insert_strings
</div>
<div id="footer">
<div class="mainfooter">
<p>$title</p>
</div>
</div>
</div>
</body>
</html>
MAIN_PAGE;
file_put_contents('C:/Satelite/'.$title,$main_page);
}
/*
<li><a href="http://wm-kull.narod.ru/">Главная</a></li>
<li><a href="http://wm-kull.narod.ru">Ссылка</a></li>
<li><a href="http://wm-kull.narod.ru">Ссылка</a></li>
<li><a href="http://wm-kull.narod.ru">Ссылка</a></li>
*/
?>

что длинна $content не равна 990
Нет, длина $content больше 2500. Все значения я проверил в Eclipse.
 
Как значения $pos, $pos_backup,$pos, $content вообще попадают в функцию create_main_page()? :eek:
 
Как значения $pos, $pos_backup,$pos, $content вообще попадают в функцию create_main_page()?
Я просто неправильно код сюда вставил. Хз, обрамляю тегами
PHP:
, а только часть кода выводится, поэтому выведу простым кодом.
Код:
<?php
error_reporting(E_ALL & ~E_NOTICE);
//chdir ('C:/content');
create_main_page('C:/content');
function create_main_page($dir)
 {
    //chdir ('C:/content');
    //$pos-$pos_backup!=496 or $pos!=strlen($content)
 	$files = glob("C:/content/*");
    foreach ($files as $file)
        {
        if ($file == "." || $file == "..") continue;
        elseif (!is_dir($file))
          {
          $content=file_get_contents($file);
          }
        }
     $previos_pos=-1;
     $pos_backup=0;
     $pos=0;
     $insert_strings='     '.'<p>';
     $true=true;
     While ($pos!=strlen($content)) 
     {    
     	While ($true)
     	{
     	While($content[$pos]!=' ' and $pos!=strlen($content))
        {
        	$insert_strings=$insert_strings.$content[$pos];
        	$pos++;
        }
        $previos_pos=$pos;
        $check_string='';
        $pointer=0;
        While($pointer!=2 and $pos!=strlen($content) )
        {
        	$check_string=$check_string.$content[$pos];
        	$pos++;
        	if ($content[$pos]!=' ') $pointer=1;
        	elseif ($pointer==1) $pointer=2;
        }
        //Вот в этом месте ошибка
        if ($pos-$pos_backup<=495 and $pos!=strlen($content))
        $insert_strings=$insert_strings.$check_string;
        else 
        {
        $pos_backup=$previos_pos;
        $pos=$previos_pos;
        break;
        }
     	}
        $insert_strings.='<br>'."\r\n".'     ';
     	//$i++;
     	$check=strlen($content);
     }
        //$count=strlen("\r\n");//strlen($insert_strings);
        $insert_strings=substr($insert_strings,0,strlen($insert_strings)-7).'</p>'."\r\n";//'     '.'</p>'."\r\n";
        $main_page=<<< MAIN_PAGE
<?xml version="1.0" encoding="windows-1251"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>$title</title>
<link rel="stylesheet" type="text/css" href="screenstyle.css" media="screen" />
</head>
<body>
<div class="wholepage">
  <div id="header">
    <div class="mainheader">
      <h2>$title</h2> 
    </div>
  </div>
  <div id="sidecontainer">
    <ul class="nav">
$side_links_2uv      
    </ul>
  </div>
  <div id="content">
    <h1>$title</h1>
$insert_strings
  </div>
  <div id="footer">
    <div class="mainfooter">
      <p>$title</p>
    </div>
  </div>
</div>
</body>
</html>
MAIN_PAGE;
file_put_contents('C:/Satelite/'.$title,$main_page);
}
/*
<li><a href="http://wm-kull.narod.ru/">Главная</a></li>
      <li><a href="http://wm-kull.narod.ru">Ссылка</a></li>
      <li><a href="http://wm-kull.narod.ru">Ссылка</a></li>
      <li><a href="http://wm-kull.narod.ru">Ссылка</a></li>
 */
?>


---------- Post added at 15:41 ---------- Previous post was at 14:01 ----------

Кстати символы перестают присоединяться, тогда когда размер переменной $insert_strings превышает 1024 байта.

Добавлено через 39 минут
Кстати, я заметил, что если переменная $insert_strings более 1024 байт, то к ней не присоединяются символы. Вот для примера код:
Код:
<?php
$content= <<< CONTENT
. . . And Basil?  From a psychological point of view,how interesting he was!  The new manner in art, the freshmode of looking at life, suggested so strangely by the merelyvisible presence of one who was unconscious of it all;the silent spirit that dwelt in dim woodland, and walked unseenin open field, suddenly showing herself, Dryadlike and not afraid,because in his soul who sought for her there had been wakenedthat wonderful vision to which alone are wonderful things revealed;the mere shapes and patterns of things becoming, as it were,refined, and gaining a kind of symbolical value, as thoughthey were themselves patterns of some other and more perfectform whose shadow they made real:  how strange it all was!He remembered something like it in history.  Was it not Plato,that artist in thought, who had first analyzed it?Was it not Buonarotti who had carved it in the coloured marblesof a sonnetsequence? But in our own century it was strange.. . . Yes; he would try to be to Dorian Gray what, without knowing itfgs
CONTENT;
$newcontent='fgssssssssssssssssssssssssssss';
$content=$content.$newcontent;
?>

строка $newcontent не прибавляется полностью к строке $content. Это, что так и должно быть? И как это можно изменить?
 
строка $newcontent не прибавляется полностью к строке $content. Это, что так и должно быть? И как это можно изменить?
Вероятно это какие-то боки php, может быть криво собран или еще что-то, попробуй установить другую версию php. :)

P.S: какая ОС и какая версия php?
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху