Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: intval и мультибайтовая строка

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Telnet
Отправлено: 23 Марта, 2015 - 22:39:28
Post Id


Частый гость


Покинул форум
Сообщений всего: 223
Дата рег-ции: Май 2011  


Помог: 1 раз(а)




Всем привет
PHP:
скопировать код в буфер обмена
  1.  
  2.         preg_match_all("#<td align='left'>(.+?)</td>#is", $this->html, $arr);
  3.         $sum = substr(trim($arr[0][2]), 0,-8);
  4.         $val = mb_substr(trim($arr[0][2]), -8);
  5.         var_dump($sum);var_dump(intval($sum));
  6.  

Такой код дает нам
string(24) "7132550" int(0)
т.е как строку он 7132550 а при переводе ее в число пишет 0, а мне перед выводом нужно еще к ней
PHP:
скопировать код в буфер обмена
  1. <?PHP echo number_format($sum, 0, ',', ' ').' '.$val; ?>

а number_format со строками не работает
и как переменную $sum преобразовать в число мне не понятно.
 
 Top
DeepVarvar Супермодератор
Отправлено: 23 Марта, 2015 - 23:02:29
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




?
 
 Top
Telnet
Отправлено: 23 Марта, 2015 - 23:23:44
Post Id


Частый гость


Покинул форум
Сообщений всего: 223
Дата рег-ции: Май 2011  


Помог: 1 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2.         preg_match_all("#<td align='left'>(.+?)</td>#is", $this->html, $arr);
  3.         $sum = (int)substr(trim($arr[0][2]), 0,-8);
  4.         $sum = (int)$sum;
  5.         var_dump($sum);
  6.  

выводит
int(0)
 
 Top
andrewkard
Отправлено: 24 Марта, 2015 - 00:11:46
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


Помог: 30 раз(а)




Telnet
А так?
PHP:
скопировать код в буфер обмена
  1.  
  2.         $sum = '7132550';
  3.         $val = $sum + 0;
  4.         var_dump($val);
  5.  
 
 Top
GoDr
Отправлено: 24 Марта, 2015 - 08:08:02
Post Id



Посетитель


Покинул форум
Сообщений всего: 446
Дата рег-ции: Янв. 2015  
Откуда: Тамбов


Помог: 17 раз(а)




Telnet, а ты правильно регулярку сделал? и вообще обработку?

Если предположить что
PHP:
скопировать код в буфер обмена
  1. $this->html = "<td align='left'>7132550</td><td align='left'>7132550</td><td align='left'>7132550</td>";


то $arr вернёт это
Цитата:
array (size=2)
0 =>
array (size=3)
0 => string '<td align='left'>7132550</td>' (length=29)
1 => string '<td align='left'>7132550</td>' (length=29)
2 => string '<td align='left'>7132550</td>' (length=29)
1 =>
array (size=3)
0 => string '7132550' (length=7)
1 => string '7132550' (length=7)
2 => string '7132550' (length=7)


$arr[0][2] содержит это:
Цитата:
string '<td align='left'>7132550</td>' (length=29)


$sum будет содержать это:
Цитата:
string '<td align='left'>7132' (length=21)


ну и соответственно $val будет таким:
Цитата:
string '550</td>' (length=8)


И как итог, любые int дадут 0

Лучше скажи что у тебя дано и что ты хочешь получить Улыбка

(Отредактировано автором: 24 Марта, 2015 - 08:08:34)



-----
Система управления веб-содержимым Lotos CMS
 
 Top
Telnet
Отправлено: 24 Марта, 2015 - 10:02:57
Post Id


Частый гость


Покинул форум
Сообщений всего: 223
Дата рег-ции: Май 2011  


Помог: 1 раз(а)




Вот html постуающий на вход
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <table class="vmorder-done"><tr><td class="vmorder-done-payinfo">Способ оплаты</td> <td align='left'><span class="vmpayment_name">Наличными</span><br /></td></tr><tr><td class="vmorder-done-nr">Номер заказа</td> <td align='left'>0b79026</td></tr><tr><td class="vmorder-done-amount">Сумма</td> <td align='left'>6454000 p.</td></tr></table>
  3.  

из него нужно дернуть число 6454000
но оно может быть написано и с пробелами типа 6 454 000
можно попробовать поиска по p. это должно быть всегда

(Отредактировано автором: 24 Марта, 2015 - 10:07:03)

 
 Top
GoDr
Отправлено: 24 Марта, 2015 - 10:53:41
Post Id



Посетитель


Покинул форум
Сообщений всего: 446
Дата рег-ции: Янв. 2015  
Откуда: Тамбов


Помог: 17 раз(а)




PHP:
скопировать код в буфер обмена
  1. $str = <<<QQQ
  2. <table class="vmorder-done">
  3. <tr><td class="vmorder-done-payinfo">Способ оплаты</td> <td align='left'><span class="vmpayment_name">Наличными</span><br /></td></tr>
  4. <tr><td class="vmorder-done-nr">Номер заказа</td> <td align='left'>0b79026</td></tr>
  5. <tr><td class="vmorder-done-amount">Сумма</td> <td align='left'>6454000 p.</td></tr>
  6. <tr><td class="vmorder-done-payinfo">Способ оплаты</td> <td align='left'><span class="vmpayment_name">Наличными</span><br /></td></tr>
  7. <tr><td class="vmorder-done-nr">Номер заказа</td> <td align='left'>0b79026</td></tr>
  8. <tr><td class="vmorder-done-amount">Сумма</td> <td align='left'>723823 p.</td></tr>
  9. </table>
  10. QQQ;
  11.  
  12.  
  13. preg_match_all("#<td align='left'>\D*([\d]+)\D*</td>#is", $str, $arr);
  14.  
  15. foreach($arr[1] as $value){
  16.     $q = number_format($value, 0, ',', ' ');
  17.     echo $q . '<br>';
  18. }
  19.  


-----
Система управления веб-содержимым Lotos CMS
 
 Top
Telnet
Отправлено: 24 Марта, 2015 - 11:56:11
Post Id


Частый гость


Покинул форум
Сообщений всего: 223
Дата рег-ции: Май 2011  


Помог: 1 раз(а)




Спасибо GoDr
что то я совсем разучился писать регулярные выражения.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB