помогите с рег виражением

Gorynych

Посетитель PHP-Клуба
texrdcom
ой, а правда! Вы все эти танцы с бубном не из-за UTF-8 затеяли? Может стоит уточнить что вы на самом деле пытаетесь сделать?

хотя все равно:
Код:
$str = mb_convert_encoding("проба", "UTF-8", "Windows-1251");
preg_match_all("/([^(\r|\n)]{1,2})/s", $str, $match);
var_dump($match);
работает, но может Вы не туда копаете?
 

texrdcom

Новичок
Gorynych
Что у тебя работает а у меня нет!
[1]=>
array(3) {
[0]=>
string(4) "пр"
[1]=>
string(4) "об"
[2]=>
string(2) "а"
}
p/s
Я вроде не спрашивал про перекодировку
я знаю как ее сделать я пытался написать рег выражения которое бы вернуло следующий масив - не важно в какой кодировке ! пусть будет windows-1251

[1]=>
array(3) {
[0]=>
string(4) "пр"
[1]=>
string(4) "об"
[2]=>
string(2) "ба" - !!!!!!!!!!!!!!!!!!!!!!!!!!!
}

-~{}~ 10.08.06 17:45:

p/s
Не важно сколько слово имеет букв парное или не парное
число - понятно что с парным количеством все решаемо.
 

whirlwind

TDD infected, paranoid
PHP:
$str = "probe";
preg_match_all('/(..?)/s',$str,$m);
var_dump($m);
-~{}~ 10.08.06 17:57:

даже без группировки. вот так

preg_match_all('/..?/s',$str,$m);
 

Gorynych

Посетитель PHP-Клуба
texrdcom
блин... В слове проба

пять букв: 1 - "п"; 2 - "р"; 3 - "о"; 4 - "б"; 5 - "а"

пять это две пары и еще одна "лишняя" буква, которая образует НЕПОЛНУЮ последнюю пару.

автоматически, заодно, длина (strlen) последней пары или полупары отвечает на вопрос четное (парное) или нечетное (непарное) количество символов:
Код:
$str = "проба";
preg_match_all("/([^(\r|\n)]{1,2})/s", $str, $match);
var_dump($match);
if ( strlen($match[1][sizeof($match[1])-1])-1 ) {
    echo "парное количество символов\n";
} else {
    echo "Непарное количество символов\n";

    // если нам не нужна НЕПОЛНАЯ пара 
    // можем удалить ее из массива $match[1]
}
на мой субъективный взгляд массив $match, полученный в результате применения такого регулярного выражения, содержит все нужные данные. Но я не до конца понимаю, что Вы (а не ты, ага?) делаете, кроме изысканий над конкретным регулярным выражением и для чего. Поэтому я не могу телепатическим образом понять, чем Вам такое решение не годится.
 

whirlwind

TDD infected, paranoid
Объясняю. Все оч. просто :) ? - это тоже квантификатор. А как мы знаем, по умолчанию они жаднючие. Но ограничить жадность можно знаком... так же ?. Тафталогия? Да! Но это так же означает, что

preg_match_all('/..??/s',$str,$m);

совершенно корректно разобьет строку посимвольно

-~{}~ 10.08.06 18:08:

ЗЫ. по моему мы тут все не врубились чего нужно автору топика :)))))


2texrdcom: а для чего это надо, можно поинтересоваться?

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

texrdcom

Новичок
whirlwind
так тоже preg_match_all('/.{1}/s',$str,$m);
з.ы
Дело не в том чтом я немогу сделать функцию которая это
сделает без рег выражений понятно можно и есть не один
вариант!
Просто я почемуто думал что можно и сделать такоеже с рег
выражением
Рег очень просто переключаеться а юникод /u
и не надо не каких там mb_ ....
 

lucas

Новичок
texrdcom

Тебе осталось только рассказать, зачем тебе нужно так разбивать строку на пары символов.
 
Сверху