локале-зависимый поиск. Что это?

Vlad1

Новичок
Добрый день!
В документации на PHP есть такая фраза:
Тем не менее, если идет локале-зависимый поиск, и произойдет совпадение с символами в диапазоне 128-255, они также будут восприняты как пробельные, например NBSP (A0).
http://php.net/manual/ru/regexp.reference.escape.php

Что это такое? Мне как раз нужно чтобы \s брал и символ A0, а он не берет его.
 

WMix

герр M:)ller
Партнер клуба
никаких "локале-зависимыx" но работает
PHP:
print_r(preg_split('~\s~u', "hello\u{a0}world"));//php7
PHP:
print_r(preg_split('~\s~u', 'hello'.mb_convert_encoding(' ', 'UTF-8', 'HTML-ENTITIES').'world'));//php5
 
Последнее редактирование:

Vlad1

Новичок
никаких "локале-зависимыx" но работает
PHP:
print_r(preg_split('~\s~u', "hello\u{a0}world"));//php7
PHP:
print_r(preg_split('~\s~u', 'hello'.mb_convert_encoding(' ', 'UTF-8', 'HTML-ENTITIES').'world'));//php5
Если я правильно понял, это работает только в UTF-8 ?
А если страница в 1251, и там тоже A0 - это неразрывный пробел. Я обрабатывал как раз такой код и \s не обращает внимания на A0.
 

WMix

герр M:)ller
Партнер клуба
тогда расскажи php про 1251 (на сколько я понимаю к locale это отношения не имеет)
 

Vlad1

Новичок
0001.jpg 0002.jpg Что я не понимаю и делаю неправильно ? :)
Есть у меня файл, который разбираю рис 0001 - его начало, 0002 -искомый момент (файл htm получен из ворда)
На рис.0002 как раз те самые пробелы. 2 код A0 и один обычный - 20 hex .

Все это нормально выводится в браузере, фар тоже видит хорошо. а вот регулярка при \s эти пробелы не трогает.

Я потому и спросил - что в документации есть такие слова про локале, а больше я нигде не нашел что это такое.

Если я в блокноте набираю alt+0160 - это и получается пробел.
 

WMix

герр M:)ller
Партнер клуба
браузер то понимает что разговор о 1251, ты сообщил ему meta-тэгом. а php свято верит в то что это ascii и таблицу я тебе показал.
 

Vlad1

Новичок
браузер то понимает что разговор о 1251, ты сообщил ему meta-тэгом. а php свято верит в то что это ascii и таблицу я тебе показал.
То есть получается, что только искать и убирать и менять A0 ?

А что в реале за кодировка? 1252 ? Это же точно не UTF-8.
 

Vlad1

Новичок
вариантов море, но самое правильное перевод в utf8

однобайтовая - ascii
Код:
<?php
echo "Таблица ASCII <table border=1>";
for ($i=0;$i<16;$i++)
{
echo "<tr>";

for ($j=0;$j<16;$j++) {
$k=$i*16+$j;
echo "<td>".$k."</td>";
echo "<td>".dechex($k)."</td>";

if($k>31) echo "<th>".chr($k)."</th>";
    else echo "<td> </td>";
}
echo "</tr>";
}
echo "</table>";
?>
0003.jpg

простая программа выдает такую таблицу...
 

WMix

герр M:)ller
Партнер клуба
где выдает в браузере? с заранее установленным заголовком? поменяй кодировку на ISO-8859-1 и подумай что знает об этом php. короче не тормози
 
Сверху