С нами с 01.10.04
Сообщения: 456
Рейтинг: 149
|
Добавлено: 30/11/08 в 20:09 |
Добрый день.
Иногда в Вордовских текстах попадаются спецсимволы, которые вызывают сбой в работе скриптов - в частности, не проходит пост CURL'ом - постится только та часть текста, которая была до этого символа.
К таким спецсимолам относятся длинное тире "—" или вот такая точка "•". Так же есть специфический апостроф "’" и еще много таких бяк, которыми грешат тексты, набранные в Microsoft Word.
Есть ли способ распознавать\заменять\экранировать или кодировать такие спецсимволы?
Спасибо.
|
|
|
|
С нами с 28.02.03
Сообщения: 8542
Рейтинг: 1609
|
Добавлено: 30/11/08 в 22:13 |
|
|
Сдам место в подписи. Предложения в личку.
|
0
|
|
|
С нами с 01.10.04
Сообщения: 456
Рейтинг: 149
|
Добавлено: 01/12/08 в 06:01 |
Проблема заключается в том, что таких спецсимволов слишком много - на первый взгляд больше сотни - и проверять каждый не есть гуд решение. Наверняка есть простой и универсальный способ...
|
|
|
|
легионер МММ
С нами с 18.04.03
Сообщения: 6239
Рейтинг: 786
|
Добавлено: 01/12/08 в 09:08 |
Попробуй закинуть текст в ворд, а потом сохранить его обычным текстовым файлом
|
|
|
|
С нами с 01.10.04
Сообщения: 456
Рейтинг: 149
|
Добавлено: 01/12/08 в 10:57 |
"Закинуть текст в Ворд" - такое решение не годится для автоматизации.
Пока придумал проверять ord() у каждого символа, т.к. нормальные англ. буквы и символы лежат в диапазоне 32-126. Но чувствую, что проблема должна решаться более изящно, чуть ли не одним пальцем...
|
|
|
|
С нами с 28.02.03
Сообщения: 8542
Рейтинг: 1609
|
Добавлено: 01/12/08 в 11:25 |
alexxxus писал: | Проблема заключается в том, что таких спецсимволов слишком много - на первый взгляд больше сотни - и проверять каждый не есть гуд решение. Наверняка есть простой и универсальный способ... |
Шаблон для проверки правильности ввода строки, которая должна содержать символы a-z, A-Z, 0-9.
Пример:
<?php
$user = $_POST['username'];
if(!preg_match("/^[a-zA-Z0-9]+$/",$user))
echo "Ошибка";
else
echo "Правильное имя";
?>
вотак можно выевлять наличие этих символов
|
|
Сдам место в подписи. Предложения в личку.
|
0
|
|
|
легионер МММ
С нами с 18.04.03
Сообщения: 6239
Рейтинг: 786
|
Добавлено: 01/12/08 в 11:45 |
Еще можно попробовать сконвертить в UTF эти символы, если база у тебя в UTF
$utf_text = iconv('UTF8','CP1251',$text_form_word);
|
|
|
|
С нами с 01.10.04
Сообщения: 456
Рейтинг: 149
|
Добавлено: 01/12/08 в 11:48 |
Цитата: | Шаблон для проверки правильности ввода строки, которая должна содержать символы a-z, A-Z, 0-9.
Пример:
<?php
$user = $_POST['username'];
if(!preg_match("/^[a-zA-Z0-9]+$/",$user))
echo "Ошибка";
else
echo "Правильное имя";
?>
вотак можно выевлять наличие этих символов |
Вообще речь идет о тексте, а не имени, а в тексте еще и знаки препинания бывают... И я спрашивал про Цитата: | Есть ли способ распознавать\заменять\экранировать или кодировать такие спецсимволы |
Т.е. или передвать текст в особой кодировке, или заменять эти символы на равноценные, или пробелами.
|
|
|
|
С нами с 01.10.04
Сообщения: 456
Рейтинг: 149
|
Добавлено: 01/12/08 в 11:58 |
alt писал: | Еще можно попробовать сконвертить в UTF эти символы, если база у тебя в UTF
$utf_text = iconv('UTF8','CP1251',$text_form_word); |
Во! Молодец! Что и нужно было узнать!
|
|
|
|
php
С нами с 09.10.06
Сообщения: 3706
Рейтинг: 2410
|
Добавлено: 01/12/08 в 21:26 |
а как же быть со знаками восклицания вопроса и прочее? или при иконв они не трогаются?
|
|
|
|
саблезубый кролик
С нами с 02.07.05
Сообщения: 2966
Рейтинг: 993
|
Добавлено: 02/12/08 в 00:57 |
А почему они должны трогаться? иконв это перекодирование.
|
|
|
|
С нами с 01.10.04
Сообщения: 456
Рейтинг: 149
|
Добавлено: 02/12/08 в 07:03 |
В общем, прочитав вот это про iconv http://php.ru/manual/function.iconv.html
сделал вот так Код: | $A = iconv('UTF-8', "UTF-8//IGNORE", $A); |
при таком раскладе левые символы просто игнорируются, без пробела.
Это уже кое что.
|
|
|
|