[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проверка на язык
Renden
Доброго времени суток, вопрос такой:
Есть переменная допустим
$my
в ней содержаться русские и английские имена, как сделать так чтоб выводились например только английские?



Спустя 14 минут, 18 секунд (19.08.2010 - 14:30) Basili4 написал(а):
$a="asdsaZввввввZ";
preg_match_all('#[A-z]+#',$a,$m);
echo implode('',$m[0]); //asdsaZZ

Спустя 10 минут, 42 секунды (19.08.2010 - 14:41) DedMorozzz написал(а):
ото махинация ))))
$text = preg_replace ('#[А-яёЁ]+#u','',$text);

Этот вариант будет раза в 2 быстрее)))

Спустя 1 минута, 13 секунд (19.08.2010 - 14:42) Renden написал(а):
Basili4Благодарю, работает, только вопрос в мане написано:
"preg_match_all -- Выполняет глобальный поиск шаблона в строке"
"implode -- Объединяет элементы массива в строку"
про поиск и шаблон понятно все, а откуда здесь берется массив для использования функции implode?

Спустя 3 минуты, 47 секунд (19.08.2010 - 14:46) DedMorozzz написал(а):
Renden, смотри на 3й параметр. И ещё раз перечитай ман.
Так же имеет смысл обратить внимание на 3й пост. Хотя это вовсе не обязательно.

Спустя 15 минут (19.08.2010 - 15:01) Renden написал(а):
DedMorozzz, про скрипт вроде вьехал, спасибо, ваше решение к сожалению не работает Warning: preg_replace() [function.preg-replace]: Compilation failed: invalid UTF-8 string at offset 2 in /var/www/testnew.php on line 3
ругаеться на кодировку, дабы не заморачиваться я воспользовался 2 постом smile.gif

Спустя 2 минуты, 35 секунд (19.08.2010 - 15:03) DedMorozzz написал(а):
убери букву "u", после решётки. А лучше - привести всю кодировку в УТФ8. У тя не она стоит. И по сему и ругается.
А использовать код, который просто работает - напоминает Попова)))

Спустя 8 секунд (19.08.2010 - 15:03) Basili4 написал(а):
DedMorozzz
Твой вариант быстрее. но он строку модифицирует.
А так конечно у тебя код лучше я что то не подумал.
Я думал может есть какой то вариант собрать все буквы англ в один эл. но что то не получилось. Потом прочитал почему. Ты кстати как то говорил что писал статью про регулярки даш почитать?

Спустя 1 минута, 41 секунда (19.08.2010 - 15:05) DedMorozzz написал(а):
В принципе там не 1 статья smile.gif Эт к твину, када он на ирбише её выложит. Я её написал на форуме ирбиша.
А что бы не "модифицировало, достаточно сохранить просто в другую переменную))))
написать не $text= , a $text2222 = . И ВСЁ! )

Спустя 19 часов, 25 минут, 40 секунд (20.08.2010 - 10:31) Renden написал(а):
Я извиняюсь конечно, теперь мне понадобилось быбрать только русские имена, и фигня в том что выбирать то он выбирает, но видимо делает какие-то преобразования с кодировкой и получаеться на выходе такая бойда: ������ (неверная кодировка)

<?php
$dir = opendir ("/var/www/test/");
while (false !== ($file = readdir($dir)))
{
if (( $file != ".") && ($file != ".."))
{
$ifile = preg_replace ('#[А-яёЁ]+#','',$file);
$source = "/var/www/test/$file";
$destrus = "/var/www/$ifile";
if(!rename($source, $destrus)) {
echo "Ошибка перемещения файла $source...<br />\n";
}
}
}

?>

Может я чет не так делаю?

Спустя 47 минут, 12 секунд (20.08.2010 - 11:18) Basili4 написал(а):
используй iconv

Спустя 21 минута, 23 секунды (20.08.2010 - 11:39) Renden написал(а):
Basili4
Я использовал, только толку.. он переводит не в ????? а в крякозябры, как я узнаю в какую именно preg_replace перевел кодировку? Просто если убрать функцию preg_replace то копирует то он нормально, сохраняя русские имена не тронутыми.

$a = iconv("исходная то какая?", "UTF-8", $ifile);

Спустя 6 минут, 16 секунд (20.08.2010 - 11:46) Basili4 написал(а):
$a = iconv("windows-1251", "UTF-8", $ifile);

$a // в Утф 8

Спустя 36 минут, 42 секунды (20.08.2010 - 12:22) DedMorozzz написал(а):
и вот теперь ДОБАВЬ модификатор U

Спустя 8 минут, 5 секунд (20.08.2010 - 12:30) Renden написал(а):
Basili4
Трабл в том что скрипт лежит на linux и собственно директории тоже линуксовые, и кодировка там хз какая на директории..
Может как-то можно реализовать обратную функцию проверки на анл яз т.е допустим ваша функция выводит тока английские имена, из этого сделать вывод оставшихся. т.е руских?
Просто неохото делать 2 скрипта, типа первым копируем анл имена, а другим скриптом копируем все что есть в директории (естественно там остануться только руские после выполнения 1 скрипта). Кривой вариант я считаю(
Простите что наверное вас уже задолбал.. unsure.gif

Спустя 9 минут, 1 секунда (20.08.2010 - 12:39) Renden написал(а):
Во я дурак... простите, перечитал свой пост и понял что можно действительно так сделать только в 1 скрипте, сначала тупо скопировать все англ, а потом уже всю директорию с оставшимися рускими..прошу прощения... спасиб=)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.