Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Тексты > обозначение всех символов


Автор: Alx 16.9.2005, 22:52
я написал скрипт, работающий с истоией сообщений icq.
мне нужен рег, который мог бы определять ник. Ник в Асе, насколько я знаю, может состоять из букв всех алфавитов, а также любых символов, кроме новой строки. Я не прав?
вот как бы мне такой рег написать?

может, так?
Код
[/a-zа-я0-9[^/r/n]]+/i


кроме того, после нахождения ников мне нужно создать на сервере файл, в название которого будут входить, оба ника и даты начала разговора и конца.

Но я думаю, что файл вида
Цитата
{{::"$S;U;P";E;®&~MAN::}}_%%**^кул@гёрл^**%%.html

вряли откроется, то перед его созжанием, мне все символы, кроме тире, подчеркивания, пробела и точки надо на что-то заменить... Либо на подчеркивание, либо просто вырезать, ну это уже значения не имеет.

В общем, помогите, если не трудно! Спасибо!
Добавлено @ 22:54
(в поиске не нашёл ничего похожего)

Автор: Alx 18.9.2005, 13:30
нарооод!
помогите!

Автор: $дмитрий 20.9.2005, 07:57
любой символ(иск. \n и т.д.) определяется символом .(точка)

Автор: Alx 20.9.2005, 11:41
$дмитрий

Код

print_r($\n_и_т.д.);


please!!
мне нужны символы, кроме английских букв и цифр!!
и потом мне же нужно их заменить!

Автор: $дмитрий 20.9.2005, 14:07
Цитата
мне нужны символы, кроме английских букв и цифр!!

[^a-zA-Z0-9] либо, насколько помню [\W\D]

Автор: $дмитрий 20.9.2005, 14:59
$string = 'кучаADMIN90всякого левака';
echo preg_replace("#[^a-z0-9]*#i","",$string);

Автор: Alx 21.9.2005, 20:01
вот как я сделал:

Код

function optimize_string($str)
{$abc_ru = array("А","Б","В","Г","Д","Е","Ё","Ж","З","И","Й","К","Л","М","Н","О","П","Р","С","Т","У","Ф","Х","Ц","Ч","Ш","Щ","Ь","Ы","Ъ","Э","Ю","Я","а","б","в","г","д","е","ё","ж","з","и","й","к","л","м","н","о","п","р","с","т","у","ф","х","ц","ч","ш","щ","ь","ы","ъ","э","ю","я");
$abc_en = array("A","B","V","G","D","E","YO","J","Z","I","Y","K","L","M","N","O","P","R","S","T","U","F","H","C","CH","SH","SCH","","Y","","E","YU","YA","a","b","v","g","d","e","yo","j","z","i","y","k","l","m","n","o","p","r","c","t","u","f","h","c","ch","sh","sch","","y","","e","yu","ya");
$str = str_replace($abc_ru,$abc_en,$str);
$str = preg_replace("/([^a-z0-9_-\s+]+)/i","0",$str);
$str = preg_replace("/(\s)/i","_",$str);
return $str;
}


хотелось бы только ещё, чтобы символы заменялись не на 0, а на urlencode(//1), но сделать это у меня не получилось...

Автор: Anarki 21.9.2005, 20:17
Цитата(Alx @ 21.9.2005, 20:01)
вот как я сделал:

Код

function optimize_string($str)
{$abc_ru = array("А","Б","В","Г","Д","Е","Ё","Ж","З","И","Й","К","Л","М","Н","О","П","Р","С","Т","У","Ф","Х","Ц","Ч","Ш","Щ","Ь","Ы","Ъ","Э","Ю","Я","а","б","в","г","д","е","ё","ж","з","и","й","к","л","м","н","о","п","р","с","т","у","ф","х","ц","ч","ш","щ","ь","ы","ъ","э","ю","я");
$abc_en = array("A","B","V","G","D","E","YO","J","Z","I","Y","K","L","M","N","O","P","R","S","T","U","F","H","C","CH","SH","SCH","","Y","","E","YU","YA","a","b","v","g","d","e","yo","j","z","i","y","k","l","m","n","o","p","r","c","t","u","f","h","c","ch","sh","sch","","y","","e","yu","ya");
$str = str_replace($abc_ru,$abc_en,$str);
$str = preg_replace("/([^a-z0-9_-\s+]+)/i","0",$str);
$str = preg_replace("/(\s)/i","_",$str);
return $str;
}


хотелось бы только ещё, чтобы символы заменялись не на 0, а на urlencode(//1), но сделать это у меня не получилось...

Используйте модификатор e - выполнение php кода при замене.
Код

$str = preg_replace("/([^a-z0-9_-\s+]+)/ie","urlencode('$1')",$str);

Автор: Alx 21.9.2005, 20:25
Anarki
о! спасибо!)

Автор: Alx 21.9.2005, 20:40
хм... текст A & Z у меня переделывается в A_%26_Z, на сервере сохраняется, как A_%26_Z.html, а через браузер не открывается.. открывается только A_%2526_Z.html

в чём дело?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)