Видимо, копать нужно в сторону регулярных выражений, но мне как паскалисту сложно сразу в них вникнуть. Может, на моем примере легче будет разобраться.
Заодно посоветуйте, плиз, как правильно отфильтровать вводимые юзверем данные, чтобы меня через мой скрипт не "нагнули".
Спустя 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
Не сработало.
2 baston
А чуть подробнее код плз...
Не сработало.
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>, а про доллар не дочитал. Без бакса заработало, респект и большое СПАСИБО!!!
Спустя 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];