Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: substr() добавляет лишний символ
 
 автор: sidPR   (19.04.2007 в 02:00)   письмо автору
 
 

$new = substr($news['news'], 0, 200);

В $new содержится обрезанный текст а в конец добовляется непонятный символ везде "Р" зачем он и как избавится?

   
 
 автор: indexer   (19.04.2007 в 02:11)   письмо автору
 
   для: sidPR   (19.04.2007 в 02:00)
 

Нету ни чего такого.

<?php
$news
['news']=<<<BLOCK
В ходе  статистической  обработки  многократных наблюдений иногда выясняется, 
что некоторые результаты значительно отличаются от ожидаемого, то  есть  результат содержит грубую погрешность
Самое разумное по трудозатратам и удобству решение
BLOCK;

$new substr($news['news'], 0200);
echo 
$new;
?>

   
 
 автор: sidPR   (19.04.2007 в 02:14)   письмо автору
 
   для: indexer   (19.04.2007 в 02:11)
 


function out_news(){
    $sql = mysql_query("SELECT * FROM `news` ORDER BY `id` DESC LIMIT 2");
    echo "<table border='0' cellpadding='0' cellspacing='0' class='out_news'>";
    while($news = mysql_fetch_array($sql)){
        $new = substr($news['news'], 0, 200);
        $new = preg_replace("<br>", " ", $new);
        echo "<tr><td><b>$news[date]</b></td></tr>";
        echo "<tr><td style='PADDING-LEFT:15px;PADDING-RIGHT:15px;'>$new</td></tr>";
        echo "<tr><td height='30' class='stroke'></td></tr>";
    }
    echo "</table>";
}


а у меня хрень какаето на выводе выходит а если я ничего не пишу после $new то обрезает близ лежащий тег ... при этом символ рядом который ставится кодировку всю корежит исходного кода

   
 
 автор: indexer   (19.04.2007 в 02:36)   письмо автору
 
   для: sidPR   (19.04.2007 в 02:14)
 

Сделай возврат значения из функции через return.
Мож попробуй вот так. если не пойдет то функцию надо будет переписывать в нормальный вид без html

<?php
function out_news(){ 
    
$sql mysql_query("SELECT * FROM `news` ORDER BY `id` DESC LIMIT 2"); 
   
$data"<table border='0' cellpadding='0' cellspacing='0' class='out_news'>"
    while(
$news mysql_fetch_array($sql)){ 
        
$new substr($news['news'], 0200); 
        
$new preg_replace("<br>"" "$new); 
   
$data.="<tr><td><b>$news[date]</b></td></tr>"
   
$data.= "<tr><td style='PADDING-LEFT:15px;PADDING-RIGHT:15px;'>$new</td></tr>"
   
$data.="<tr><td height='30' class='stroke'></td></tr>"
    } 
    
    
$data=$data."</table>"
    return 
$data;
}

?>

[поправлено модератором]

   
 
 автор: sidPR   (19.04.2007 в 07:48)   письмо автору
 
   для: indexer   (19.04.2007 в 02:36)
 

Безполезно всеравно все ломается :( ума не приложу изза чего как вообще такое возможно

   
 
 автор: sidPR   (19.04.2007 в 22:33)   письмо автору
 
   для: sidPR   (19.04.2007 в 07:48)
 

Дело было не в бабине ответ на тему по этому адресу: http://softtime.ru/forum/read.php?id_forum=4&id_theme=36121

   
 
 автор: cheops   (19.04.2007 в 22:46)   письмо автору
 
   для: sidPR   (19.04.2007 в 02:00)
 

Выводите сразу сообщение $new? Не может непонятный символ добавляться при выводе echo?

   
 
 автор: sidPR   (19.04.2007 в 23:28)   письмо автору
 
   для: cheops   (19.04.2007 в 22:46)
 

просто substr некоректно работает с UTF-8 я поставил mb_substr вместо нее все запахало на ура...

Ситуация такая при выводе обрезанного текста которые в переменно $new в конце строки добовляется какойто ероглиф либо обрезается </TD> ближ лижаший и получается "мой текст/TD>"
вот при этом со страницой и кодировкой на странице вродебы ничего не происходит.. но стоит заглянуть в исходный код страници все становится ясно что кодировка сбита ...тоесть русские символы привращяются в каракули... после mb_aubstr проблемы была решена на корню :)

   
 
 автор: Trianon   (20.04.2007 в 10:34)   письмо автору
 
   для: sidPR   (19.04.2007 в 23:28)
 

substr работает не с символьным, а с байтовым потоком ( в мануале даже стоит явный акцент, что эта функция может работать с двоичными данными.) Совершенно естественно, что текстом в многобайтовой кодировке она будет работать некорректно.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования