2010-04-16 2 views

ответ

2

Вы можете использовать взрываются:

$var = '5551112391^HUMAN^HUMAN-800-800^6-main^^'; 
$arr = explode('^',$var); 
$num = $arr[0]; 

Использование регулярных выражений:

$var = '5551112391^HUMAN^HUMAN-800-800^6-main^^'; 
if(preg_match('/^(\d+)/',trim($var),$m)){ 
    $num = $m[1]; 
} 
+0

Именно то, что я искал .. Спасибо! –

+0

Как я могу использовать это «главное»? –

0

Вы делаете это в совершенно неправильно.
Вы обрабатываете базу данных mysql как текстовый файл. Но это не так.

  1. Все эти поля должны быть разделены и сохранены в отдельных столбцах.
  2. Чтобы получить только определенные данные из таблицы, вы не должны выбрать все строки, а затем сравнить один за другим, но сделать базу данных сделать это для вас:

    SELECT * FROM таблицы WHERE число = 5551112391

+0

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

+0

Это не оправдание, @zx попытаться научиться использовать базу данных немного. Мы сохраняем данные пользователя в наших таблицах. ничего плохого в нормализации его также –

+0

Я не кодировал эту часть, это звездочка делает это. Я просто работаю с данными, данными мне :) –

1

Regex overkill, nice ...

Как насчет простого приведения в int? Будет работать отлично, если номер находится в начале данных. И, безусловно, быстрее, чем регулярные выражения ...

$var = '5551112391^HUMAN^HUMAN-800-800^6-main^^'; 
$num = (int)$var; 

http://www.php.net/manual/en/language.types.type-juggling.php

Смежные вопросы