<?php
$data='sdfs80633249087ddfs80443345343fff';
$pos = strpos($data, "80");
while($pos){
$string = substr($data, $pos, 11);
$a[]=$string;
$data = str_replace($string,'',$data);
echo $string.'<br>';
}
?>
Спустя 7 минут, 18 секунд (24.12.2010 - 22:40) quickxyan написал(а):
все спасибо всем, сам разобрался))) просто надо строку
вставить в цикл)
$pos = strpos($data, "80");
вставить в цикл)
Спустя 2 минуты, 23 секунды (24.12.2010 - 22:42) Dron19 написал(а):
$data='sdfs80633249087ddfs80443345343fff';
$preg = preg_replace("/(.*?)([0-9]?)/i","\\2",$data);
echo "<br>".$preg;
Лови, но этот скрипт выведет 80633249087 и 80443345343 одной строкой, то бишь слитно
Спустя 4 минуты, 10 секунд (24.12.2010 - 22:46) quickxyan написал(а):
<?php
$data='sdfs80633249087ddfs80443345343fff';
while(strpos($data, "80")){
$string = substr($data, strpos($data, "80"), 11);
$a[]=$string;
$data = str_replace($string,'',$data);
echo $string.'<br>';
}
?>
вот конечная версия если кому интересно
Спустя 2 минуты, 34 секунды (24.12.2010 - 22:49) quickxyan написал(а):
Dron19, тоесть ты предлагаешь делать через регулярные выражения. а как чтобы оно закидывало в массив и раздельно.
можна впринципе просто потом эту строку по частям разбирать и закидывать в масссив или есть другие предложения?
можна впринципе просто потом эту строку по частям разбирать и закидывать в масссив или есть другие предложения?
Спустя 2 минуты, 54 секунды (24.12.2010 - 22:52) Dron19 написал(а):
$data='sdfs80633249087ddfs80443345343fff';
$preg = preg_replace("/(.*?)([0-9]+)(.*?)([0-9]+)(.*)/i","\\2 \\4",$data);
echo "<br>".$preg;
А вот так выведет // 80633249087 80443345343
Спустя 1 минута, 10 секунд (24.12.2010 - 22:53) Dron19 написал(а):
ну по моему регуляркой легче
Спустя 2 минуты, 8 секунд (24.12.2010 - 22:55) hellmin написал(а):
$data='sdfs80633249087ddfs80443345343fff';
preg_match("/(80[0-9]{9})/i",$data, $matches);
print_r($matches);
Спустя 1 минута, 43 секунды (24.12.2010 - 22:57) quickxyan написал(а):
вобщем ясно. спасибо за помощь, но я все таки наверное буду пользоваться своим способом - просто как-то недоразобрался в регулярках и хочу использовать, то что я понимаю)
Спустя 2 минуты, 6 секунд (24.12.2010 - 22:59) quickxyan написал(а):
хотя впринципе и регуляркой тож ниче) далеее увидим. всем спасибо, что откликнулись!
Спустя 1 минута, 47 секунд (24.12.2010 - 23:01) hellmin написал(а):
А что тут разбираться?
80 - число с которого начинается номер
[0-9] - любая цифра, так же можно использовать \d и получится немного короче preg_match("/(80\d{9})/i",$data, $matches);
{9} - 9 повторений
[0-9]{9} - 9 повторений любой цифры
Небольшой код, зато выдает то что и хочется
preg_match("/(80[0-9]{9})/i",$data, $matches);
80 - число с которого начинается номер
[0-9] - любая цифра, так же можно использовать \d и получится немного короче preg_match("/(80\d{9})/i",$data, $matches);
{9} - 9 повторений
[0-9]{9} - 9 повторений любой цифры
Небольшой код, зато выдает то что и хочется
Array ( [0] => 80633249087 [1] => 80633249087 )
Спустя 5 минут, 27 секунд (24.12.2010 - 23:06) Dron19 написал(а):
Цитата (hellmin @ 24.12.2010 - 20:01) |
А что тут разбираться?preg_match("/(80[0-9]{9})/i",$data, $matches); 80 - число с которого начинается номер [0-9] - любая цифра, так же можно использовать \d и получится немного короче preg_match("/(80\d{9})/i",$data, $matches); {9} - 9 повторений [0-9]{9} - 9 повторений любой цифры Небольшой код, зато выдает то что и хочется Array ( [0] => 80633249087 [1] => 80633249087 ) |
У тебя в 0 элементе и в 1ом одно и тоже, а нужно вытащить разные значения
Спустя 37 секунд (24.12.2010 - 23:07) Dron19 написал(а):
quickxyanБ мой способ рабочий? Да! Где плюсик ? =)

Спустя 6 минут, 34 секунды (24.12.2010 - 23:13) hellmin написал(а):
Рано плюсик!
$data='sdfs80633249087ddfs80443345343fff';
preg_match_all("/(80[0-9]{9})/i",$data, $matches);
print_r($matches);
Спустя 14 секунд (24.12.2010 - 23:13) quickxyan написал(а):
да способ рабочий . но все же как залить каждую строчку в массив? у себя я это решил.
спасибо за разъяснения регулярок, но в простых я и так разбираюсь, а вот в закрученных уже надо сидеть и думать)
спасибо за разъяснения регулярок, но в простых я и так разбираюсь, а вот в закрученных уже надо сидеть и думать)
Спустя 5 минут, 34 секунды (24.12.2010 - 23:19) hellmin написал(а):
На мой последний пример обратите внимание. Там все работает. Используется другая функция preg_match_all().
quickxyan
Надо еще проверять что ты вытащил! Ну это если своим вариантом воспользуешься.
quickxyan
Надо еще проверять что ты вытащил! Ну это если своим вариантом воспользуешься.
$data='sdfs8063d3249087ddfs80443345343fff';
while(strpos($data, "80")){
$string = substr($data, strpos($data, "80"), 11);
if(is_numeric($string))
{
$a[]=$string;
echo $string.'<br>';
}
$data = str_replace($string,'',$data);
}
Спустя 9 минут, 18 секунд (24.12.2010 - 23:28) Dron19 написал(а):
$data='sdfs80633249087ddfs80443345343fff';
$preg = preg_replace("/(.*?)([0-9]+)(.*?)([0-9]+)(.*)/i","\\2 \\4",$data);
$massive = explode(" ",$preg);
Лови код
$massive[0] - 80633249087
$massive[1] - 80443345343
Как ты и хотел, и кода мало и быстро работать будет, самый оптимальный вариант
Спустя 1 минута, 53 секунды (24.12.2010 - 23:30) Dron19 написал(а):
Цитата (hellmin @ 24.12.2010 - 20:19) |
На мой последний пример обратите внимание. Там все работает. Используется другая функция preg_match_all(). quickxyan Надо еще проверять что ты вытащил! Ну это если своим вариантом воспользуешься. $data='sdfs8063d3249087ddfs80443345343fff'; |
Я не понимаю, нахрена столько бестолковой работы, зачем ты свой новый велосипед создаешь?
Спустя 1 минута, 40 секунд (24.12.2010 - 23:32) Dron19 написал(а):
Ты только посчитай разницу, между моим кодом и его, у него команд элементарно даже больше
Спустя 57 секунд (24.12.2010 - 23:33) hellmin написал(а):
Вот это ([0-9]+) любое число начиная от 0 и заканчивая бесконечностью.
А вдруг в строке будет 50 номеров, то надо будет 50 раз повторить (.*?)([0-9]+) ?
А вдруг в строке будет 50 номеров, то надо будет 50 раз повторить (.*?)([0-9]+) ?
Спустя 45 секунд (24.12.2010 - 23:34) hellmin написал(а):
Dron19
Цитата |
Ты только посчитай разницу, между моим кодом и его, у него команд элементарно даже больше |
А ты между моим и своим
Спустя 31 секунда (24.12.2010 - 23:34) Dron19 написал(а):
Цитата (hellmin @ 24.12.2010 - 20:34) | ||
Dron19
А ты между моим и своим |
вот и посчитай, в моем и своем
Спустя 1 минута, 10 секунд (24.12.2010 - 23:35) Dron19 написал(а):
советую Вам подучить материал по регулярным выражениям, а потом уже чушь нести

Спустя 2 минуты, 15 секунд (24.12.2010 - 23:38) hellmin написал(а):
Мой код
Твой код
preg_match_all("/(80[0-9]{9})/i",$data, $matches);
//Используется одна функция
//$matches - массив с телефонами
Твой код
$preg = preg_replace("/(.*?)([0-9]+)(.*?)([0-9]+)(.*)/i","\\2 \\4",$data);
$massive = explode(" ",$preg);
//Используются две функции и две операции присваивания
//$massive - массив с телефонами
Спустя 4 минуты, 16 секунд (24.12.2010 - 23:42) linker написал(а):
/(80[0-9]{9})/i - не пройдет, если номер телефона не начинается с 80 и/или если количество последующих цифр менее или более 9.
Спустя 2 минуты, 9 секунд (24.12.2010 - 23:44) Dron19 написал(а):
Цитата (hellmin @ 24.12.2010 - 20:38) |
Мой кодpreg_match_all("/(80[0-9]{9})/i",$data, $matches); Твой код $preg = preg_replace("/(.*?)([0-9]+)(.*?)([0-9]+)(.*)/i","\\2 \\4",$data); |
вот вот, у меня строка разбирается по ее составу, поэтому это одна команда, он не будет посимвольно проходить
Спустя 19 секунд (24.12.2010 - 23:44) quickxyan написал(а):
СПАСИБО - можна закрывать тему уже, я понял, что нужно было самому подумать, а не просить помощи - да и велостпед выдумывать не стоило, но каждый придумывает свое решение)
Спустя 34 секунды (24.12.2010 - 23:45) Dron19 написал(а):
короче, подучи регулярки, завязываем этот бестолковый спор, все равно он не к чему не приведет
Спустя 35 секунд (24.12.2010 - 23:45) Dron19 написал(а):
верно =)
Спустя 2 минуты, 12 секунд (24.12.2010 - 23:48) hellmin написал(а):
linker
Условие пройдет.
Номер начинается на 80 и ко-во цифр 11
Условие пройдет.
Номер начинается на 80 и ко-во цифр 11
Спустя 18 минут, 12 секунд (25.12.2010 - 00:06) quickxyan написал(а):
а как найти 7 цифр в строке которые идут подряд, но я не знаю что это за цифры? что-то читаю регулярки и переатриваю ваши, но все равно не доходит (
вот попробывал, но почему-то не работает.
вот попробывал, но почему-то не работает.
$preg = preg_replace(""/([0-9]+{7})/i"","\\2 \\4",$data);
Спустя 12 минут, 15 секунд (25.12.2010 - 00:18) Dron19 написал(а):
Тебе сюда http://softtime.ru/bookphp/gl7_1.php
Спустя 2 минуты, 36 секунд (25.12.2010 - 00:21) quickxyan написал(а):
спс, перечитал именно это. все равно не все ясно
Спустя 2 минуты, 33 секунды (25.12.2010 - 00:23) Dron19 написал(а):
значит плохо перечитал, читай внимательней, мне хватило один раз прочитать и по-составлять простенькие регулярные выражения, а дальше норм пошло, читайте еще, составляйте простые решения
Спустя 51 минута, 12 секунд (25.12.2010 - 01:14) Invis1ble написал(а):
quickxyan
Цитата |
вот попробывал, но почему-то не работает. $preg = preg_replace(""/([0-9]+{7})/i"","\\2 \\4",$data); |
у тебя тут кавычки лишние + обращаешься к неопределенным карманам
Спустя 7 часов, 44 минуты, 20 секунд (25.12.2010 - 08:59) quickxyan написал(а):
вроде рахобрался с регулярками, но проблема массивов меня просто гнетет уже.
если пишу так:
выводит:
если же вывожу в цыкле:
выводит:
вопрос - где ошибка?
если пишу так:
$data='sjfhjsd3333563dsf7765432ssdsdf';
$preg = preg_match_all("/[0-9]{7}/i",$data,$matches);
print_r($matches);
выводит:
Array ( [0] => Array ( [0] => 3333563 [1] => 7765432 ) )
если же вывожу в цыкле:
$data='sjfhjsd3333563dsf7765432ssdsdf';
$preg = preg_match_all("/[0-9]{7}/i",$data,$matches);
foreach($matches as $val){
echo $matches;
}
выводит:
Array
вопрос - где ошибка?
Спустя 7 минут, 59 секунд (25.12.2010 - 09:07) quickxyan написал(а):
ага понял - просто это двухмерный массив получаеться.
реультат
что мне и нужно было)
---------------------------
а как выести в цыкле двухмерный массив? через foreach, array_values не работает. пробовал через функцию count узнать количество элементов массива. но выводит 1, а там их 3 .
$data='sjfhjsd3333563dsf7765432ssdsdf';
$preg = preg_match_all("/[0-9]{7}/",$data,$matches);
//print_r($matches);
echo $matches[0][0];
echo $matches[0][1];
реультат
33335637765432
что мне и нужно было)
---------------------------
а как выести в цыкле двухмерный массив? через foreach, array_values не работает. пробовал через функцию count узнать количество элементов массива. но выводит 1, а там их 3 .
Спустя 2 минуты, 5 секунд (25.12.2010 - 09:09) hellmin написал(а):
foreach($matches[0] as $val){
echo $val;
}
Спустя 19 минут, 30 секунд (25.12.2010 - 09:28) quickxyan написал(а):
огромное спасибо! я уже и так и сяк пробовал, а он нивкакую)
_____________
печатаю со скоростью 320 минут в знак...
плюсуем карму не стесняемся