Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как отловить в строке символ Unicode 
:(
    Опции темы
korob2001
Дата 28.5.2006, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 1
Всего: 61



Привет!
Мне нужно отловить в строке, с помощью шаблона символы Unicode, например: êëéè. При этом мне желательно не указывать их явно, так как файл приходится переводить в кодировку UTF-8, что порождает другие проблемы. ;(((( Как в PHP указать код символа Unicode в шаблоне, например в Perl, что бы отловить эти символы, можно написать такой шаблон:
/\xEA\xEB\xE9\xE8/ попробовал, так же и в PHP, т.е.:
Код
if (!eregi('[A-Za-z\xEA\xEB\xE9\xE8\s-]+', $_POST["mess"])) {
        $message = "Message is not valid";
        return;
}

Но что-то это не заработало. ;(((
Искал в книге "Разработка Web-приложений с помощью PHP и MySQL" (Люк Веллинг, Лора Томсон), но там ничего о unicode не нашёл. 


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
-=Ustas=-
Дата 29.5.2006, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 32
Всего: 69



Скорее всего тебе нужно смотреть в сторону функций мультибайтных строк. Но там надо PHP компилить с поддержкой этих функций. 


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
korob2001
Дата 30.5.2006, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 1
Всего: 61



Да не знаю, вообще PHP воспринимает символы Unicode, значит и шаблон их должен находить. Вот пример как такой код вывести в строку.
Код
<html>
<head>
    <title>Test</title>
    <META http-equiv=Content-Type content="text/html; charset=latin1">
</head>
<body>
    <?php
        echo "Hallo van Belgi\xEB!";
    ?>
</body>
</html>

На выходе получишь строку: Hallo van België (Привет из Бельгии!) на нидерландском языке. Ладно, сейчас ещё поищу в сети.  

Это сообщение отредактировал(а) korob2001 - 30.5.2006, 10:12


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
-=Ustas=-
Дата 30.5.2006, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 32
Всего: 69



korob2001, так подожди, работает ведь все:
Код

<?php

$string =  "Hallo van Belgi\xEB!";
echo $string.'<hr>';

if (preg_match("#\\xEB#is", $string)) {
    echo 'Найден!';
} else {
    echo 'Не найден!';
}

?>


Или я тебя неправильно понял?! 


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
korob2001
Дата 30.5.2006, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 1
Всего: 61



 smile Да, похоже я сам запарился. Проблема в кавычках, нужны были двойные, для интерполяции специальных символов. В моём варианте выражение искало последовательность \xEB,а не символ ë. Но я ещё не пробовал, чуть позже попробую и напишу о результате, так как юзер будет вводить символ ë, а не код этого символа. 

Это сообщение отредактировал(а) korob2001 - 30.5.2006, 10:57


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
korob2001
Дата 30.5.2006, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 1
Всего: 61



Вот так то, что нужно. Всё заработало.  smile 
Код

<html>
    <head>
    <META http-equiv=Content-Type content="text/html; charset=latin1">
    <title>Test</title>
    </head>
    <body>
    <?php if (!isset($_POST['send'])) { ?>
        <form method="POST">
        <input type="text" name="country" size="30"/>
        <input type="submit" value="Send" name="send"/>
    <?php } else {
            if (preg_match("#\xEB#is", $_POST['country'])) {
                 echo 'Yes!';
            } else {
                 echo 'No!';
            }
            echo "<hr/><b>Your country is: " . $_POST['country'] . "</b>";
          }
    ?>
    </body>
</html>

Попробуй скопировать и вставить следующую строку:
België 


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0729 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.