Видимо, копать нужно в сторону регулярных выражений, но мне как паскалисту сложно сразу в них вникнуть. Может, на моем примере легче будет разобраться.
Заодно посоветуйте, плиз, как правильно отфильтровать вводимые юзверем данные, чтобы меня через мой скрипт не "нагнули".
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Спустя 59 минут, 13 секунд (18.02.2010 - 15:26) baston написал(а):
Может быть, такое выражение:
(^[A-F0-9]{4})[^A-F\d]([A-F0-9]{4}$)
(^[A-F0-9]{4})[^A-F\d]([A-F0-9]{4}$)
Спустя 1 час, 28 секунд (18.02.2010 - 16:27) Palych написал(а):
Не понял, в середине отрицание символов?
Я, наверное, не очень понятно написал. Разделитель не в центре, а в конце структуры, в центре д.б. "-".
Есть строка:
1234-ABCD 1A2B-3C4D 9999-FFFF
Вместо пробелов м.б. что угодно, в начале и конце строк тоже, нужно получить:
1234-ABCD
1A2B-3C4D
9999-FFFF
Я, наверное, не очень понятно написал. Разделитель не в центре, а в конце структуры, в центре д.б. "-".
Есть строка:
1234-ABCD 1A2B-3C4D 9999-FFFF
Вместо пробелов м.б. что угодно, в начале и конце строк тоже, нужно получить:
1234-ABCD
1A2B-3C4D
9999-FFFF
Спустя 6 минут, 55 секунд (18.02.2010 - 16:34) DedMorozzz написал(а):
preg_replace("/[^A-Z0-9-]+$/","\r\n",$str);как-то так наверное
Спустя 6 минут (18.02.2010 - 16:40) baston написал(а):
([0-9A-F]{4})
Но, может быть захвачены и символы, похожие на искомые, в самом тексте, если попадутся.
Но, может быть захвачены и символы, похожие на искомые, в самом тексте, если попадутся.
Спустя 25 минут, 35 секунд (18.02.2010 - 17:05) Palych написал(а):
2 DedMorozzz
Не сработало.![sad.gif](http://phpforum.ru/html/emoticons/sad.gif)
2 baston
А чуть подробнее код плз...
Не сработало.
![sad.gif](http://phpforum.ru/html/emoticons/sad.gif)
2 baston
А чуть подробнее код плз...
Спустя 2 минуты, 13 секунд (18.02.2010 - 17:07) DedMorozzz написал(а):
мм...не сработало? Что выдало и откуда берёшь строку? Алгоритм передльно прост - пропускаються символы A-Z0-9 и дефис, а остальные заменяються на перевод строки. Что там могло не сработать.
Спустя 6 минут, 1 секунда (18.02.2010 - 17:13) DedMorozzz написал(а):
А, блин, сотри "$". Итого выглядеть должно так:
Иль вместо "\r\n\" - "<br>".
preg_replace("/[^A-Z0-9-]+/","\r\n",$str);
Иль вместо "\r\n\" - "<br>".
Спустя 2 минуты, 57 секунд (18.02.2010 - 17:16) Palych написал(а):
В адресной строке ввожу:
www.mysite.com/myscript.php?str=1234-1234,1111-2222%20%203333-4444
В скрипте:
Выводит:
1234-1234,1111-2222 3333-4444
С <br> аналогично.
www.mysite.com/myscript.php?str=1234-1234,1111-2222%20%203333-4444
В скрипте:
...
$str = strtoupper($_GET['str']);
$str = preg_replace("/[^A-Z0-9-]+$/","\r\n",$str);
echo $str;
...
Выводит:
1234-1234,1111-2222 3333-4444
С <br> аналогично.
Спустя 5 секунд (18.02.2010 - 17:16) Mizka написал(а):
$str = '1234-ABCD 1A2B-3C4D 9999-FFFF';
$outputArray = explode(" ", $str);
echo $outputArray[0]; // 1234-ABCD
Спустя 4 минуты, 2 секунды (18.02.2010 - 17:20) DedMorozzz написал(а):
Внимательно прочти мой последний пост(особенно про доллар). Там всё написано! Работает точно. У себя проверил
Спустя 1 минута, 54 секунды (18.02.2010 - 17:22) Mizka написал(а):
Цитата |
1234-ABCD 1A2B-3C4D 9999-FFFF Вместо пробелов м.б. что угодно, в начале и конце строк тоже, нужно получить: 1234-ABCD 1A2B-3C4D 9999-FFFF |
что хотел, то и получил...
Спустя 31 секунда (18.02.2010 - 17:23) Palych написал(а):
Mizka
Если бы только пробелы там были, да. Но что юзверь введет в поле - хз. Важно сделать так, чтобы можно было выцепить по возможности все структуры, хоть юзверь введет через пробел, хоть через запятую и пробел, хоть через точку с запятой, и загнать всю эту байду в массив.
Если бы только пробелы там были, да. Но что юзверь введет в поле - хз. Важно сделать так, чтобы можно было выцепить по возможности все структуры, хоть юзверь введет через пробел, хоть через запятую и пробел, хоть через точку с запятой, и загнать всю эту байду в массив.
Спустя 1 минута, 48 секунд (18.02.2010 - 17:25) DedMorozzz написал(а):
<?php
$aaa= "1234-1234,1111-2222%20%203333-4444";
echo preg_replace("/[^A-Z0-9-]+/","<br>",$aaa);
?>
Вот что вывело:
1234-1234
1111-2222
20
203333-4444
Спустя 1 минута, 3 секунды (18.02.2010 - 17:26) Palych написал(а):
DedMorozzz
Обратил внимание только на <br>, а про доллар не дочитал. Без бакса заработало, респект и большое СПАСИБО!!!
Обратил внимание только на <br>, а про доллар не дочитал. Без бакса заработало, респект и большое СПАСИБО!!!
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Спустя 6 дней, 20 часов, 45 минут, 30 секунд (25.02.2010 - 14:11) Palych написал(а):
И все-таки я не совсем доволен результатом - это решение не проверяет число символов в структуре и чтобы '-' был именно посередине. Думал, дальше сам разберусь, но что-то не выходит. Хотелось бы, чтобы из строки на входе:
получался массив:
$s = "1234-5678,1A2B-3C4D ABCD-EF90, 123, ABC-DEF00";
получался массив:
a[0]=1234-5678
a[1]=1A2B-3C4D
a[2]=ABCD-EF90
Спустя 1 час, 18 минут, 56 секунд (25.02.2010 - 15:30) Palych написал(а):
Так вроде работает:
preg_match_all("/[A-F0-9]{4}[-][A-F0-9]{4}+/",$s,$aa,PREG_PATTERN_ORDER);
$a = $aa[0];