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

Форум PHP

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

 

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

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

тема: Ошибка с substr
 
 автор: trix   (21.07.2009 в 13:08)   письмо автору
 
 

Такая проблема.

Есть некий текст, который идет допустим с рсс Яндекса. Мне нужно его разбить на 2 куска и между ними вставить разделитель, вроде все просто


$content =  "шлепая по лужам, шумно дыша";
    echo substr($content,0,11)." Test  ".substr($content,10);



Получаю результат:

шлепая по лужам Test �, шумно дыша

Вставляется какой-то левый символ которого нет в базовом тексте. При попытке вставить эти данные в БД они обрезаются ровно по этому символу.
Возможно какая-то проблема кодировки? Но как это исправить ХЗ.

  Ответить  
 
 автор: sim5   (21.07.2009 в 13:25)   письмо автору
 
   для: trix   (21.07.2009 в 13:08)
 

А в какой кодировке яшкин файл, и в какой вы работаете? substr тут совсем не при чем.

  Ответить  
 
 автор: trix   (21.07.2009 в 13:54)   письмо автору
 
   для: sim5   (21.07.2009 в 13:25)
 

А шут его знает кто тут причем!
Яшка вроде как UTF-8 отдает. База данных у меня utf8_general_ci. Но данные обрабатываются в компиляторе php значит его кодировка нужна!?
Она указывается как-то в php.ini ?

Можно поробывать этот символ заменть str_replace но как его поймать? Броузер его выдает квадратиком просто

  Ответить  
 
 автор: sim5   (21.07.2009 в 15:26)   письмо автору
 
   для: trix   (21.07.2009 в 13:54)
 

Это в httpd.conf Апач прописывается, например:
#
# Denwer: default charset.
#
AddDefaultCharset windows-1251

Такое - � может возникать от того, что работа ведется с разными кодировками, и в конечном наборе нет представления символа, поэтому оно заменяется на html-представление. Вообще же, для работы с мультибайтными строками есть свои функции, а многие функции работы с однобайтными строками с мультибайтными строками будут работать некорректно. В этом тоже может заключаться причина.
Получить кодировку страницы можно так:
<?
function getCharset($url) {
  
$ch = @get_headers($url1);
  return 
$ch substr($ch['Content-Type'], strpos($ch['Content-Type'], "=")+1) : false;
}
?>

  Ответить  
 
 автор: trix   (21.07.2009 в 16:14)   письмо автору
 
   для: sim5   (21.07.2009 в 15:26)
 

Все OK надо было юзать функцию mb_substr();

  Ответить  
 
 автор: Жмурик   (22.07.2009 в 03:39)
 
   для: trix   (21.07.2009 в 16:14)
 

я ща курну

  Ответить  
 
 автор: Trianon   (22.07.2009 в 04:20)   письмо автору
 
   для: sim5   (21.07.2009 в 15:26)
 

> return $ch ? substr($ch['Content-Type'], strpos($ch['Content-Type'], "=")+1) : false;

Амикошонство это...

  Ответить  
Rambler's Top100
вверх

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