проблема с передачей через форму preg_match_all

kolyazdv

Новичок
проблема с передачей через форму preg_match_all

Доброе утро!
Столкнулся с проблемкой

пишу конфигуратор сборки компьютеров.
данные находяться в скрытом поле

<input type="hidden" name="zak">

по нажатию на кнопку отправляет даные скрипту....

но есть проблемка....
echo $_POST["zak"]; - выводит все что нужно

1шт x 891 грн - Intel Core 2 Duo E8200 2,66GHz Box 1333MHz 6Mb LGA775&&19450 1шт x 25 грн - Deep Cool Alpha 6 Fan s775&&21066 1шт x 307 грн - ASUS M2N-XE GF6100/nForce430 AM2+ без Видео DDRII PCI-E SATA2 AC` 5.1&&18693 1шт x 272 грн - Corsair DIMM 2048Mb XMS2-PC6400 240 DIMM, unbuffered, 5-5-5-18, with Heat Spreader (CM2X2048-6400C5)&&16159 1шт x 327 грн - Samsung HD321KJ 320,0 Gb 7200 rpm 16Mb SATA-II&&19033 1шт x 144 грн - LG GH20NS10 Super Multi CD/DVD Writer SATA White&&18870 1шт x 35 грн - MITSUMI FDD 3.5\" 1.44 Mb Silver&&4329 1шт x 1213 грн - ASUS EN8800GT/HTDP/1G/A GeForce 8800GT 1024Mb PCI-E&&19019 1шт x 277 грн - COMPRO VideoMate M3F TV/FM Tuner Remote Control&&18271

как прмер...

так вот если
$str = $_POST["zak"];
preg_match_all("/([0-9])шт.+?&&([0-9]+?) /si", $str, $ncat);

то выводит пустые масивы...

а если скопировать результат...
$str = '1шт x 891 грн - Intel Core 2 Duo E8200 2,66GHz Box 1333MHz 6Mb LGA775&&19450 1шт x 25 грн - Deep Cool Alpha 6 Fan s775&&21066 1шт x 307 грн - ASUS M2N-XE GF6100/nForce430 AM2+ без Видео DDRII PCI-E SATA2 AC` 5.1&&18693 1шт x 272 грн - Corsair DIMM 2048Mb XMS2-PC6400 240 DIMM, unbuffered, 5-5-5-18, with Heat Spreader (CM2X2048-6400C5)&&16159 1шт x 327 грн - Samsung HD321KJ 320,0 Gb 7200 rpm 16Mb SATA-II&&19033 1шт x 144 грн - LG GH20NS10 Super Multi CD/DVD Writer SATA White&&18870 1шт x 35 грн - MITSUMI FDD 3.5\" 1.44 Mb Silver&&4329 1шт x 1213 грн - ASUS EN8800GT/HTDP/1G/A GeForce 8800GT 1024Mb PCI-E&&19019 1шт x 277 грн - COMPRO VideoMate M3F TV/FM Tuner Remote Control&&18271';

preg_match_all("/([0-9])шт.+?&&([0-9]+?) /si", $str, $ncat);

обрабатывает все как нужно.

Array
(
[0] => Array
(
[0] => 1шт x 891 грн - Intel Core 2 Duo E8200 2,66GHz Box 1333MHz 6Mb LGA775&&19450
[1] => 1шт x 25 грн - Deep Cool Alpha 6 Fan s775&&21066
[2] => 1шт x 307 грн - ASUS M2N-XE GF6100/nForce430 AM2+ без Видео DDRII PCI-E SATA2 AC` 5.1&&18693
[3] => 1шт x 272 грн - Corsair DIMM 2048Mb XMS2-PC6400 240 DIMM, unbuffered, 5-5-5-18, with Heat Spreader (CM2X2048-6400C5)&&16159
[4] => 1шт x 327 грн - Samsung HD321KJ 320,0 Gb 7200 rpm 16Mb SATA-II&&19033
[5] => 1шт x 144 грн - LG GH20NS10 Super Multi CD/DVD Writer SATA White&&18870
[6] => 1шт x 35 грн - MITSUMI FDD 3.5\" 1.44 Mb Silver&&4329
[7] => 1шт x 1213 грн - ASUS EN8800GT/HTDP/1G/A GeForce 8800GT 1024Mb PCI-E&&19019
)

[1] => Array
(
[0] => 1
[1] => 1
[2] => 1
[3] => 1
[4] => 1
[5] => 1
[6] => 1
[7] => 1
)

[2] => Array
(
[0] => 19450
[1] => 21066
[2] => 18693
[3] => 16159
[4] => 19033
[5] => 18870
[6] => 4329
[7] => 19019
)

)

подскажите в чем может быть проблема
 

donflash

Вареник клуба
ИМХО - проблема явно в мозгах, если считать правильным хранить это в hidden...
 

kolyazdv

Новичок
переделал так

<textarea rows=13 cols=140 type=text name="zak" class=submit3 readonly="true"></textarea>

тоже самое...

echo $_POST["zak"]; - печатает все ок

а вот
$str = $_POST["zak"];
preg_match_all("/([0-9])шт.+?&&([0-9]+?) /si", $str, $ncat);

выдает пустой масив
echo '<pre>';
print_r($ncat);
echo '</pre><BR>';
 

kolyazdv

Новичок
$_POST["zak"]=="'1шт x 891 грн ....." ? - так нет

а когда делаю
$str ="1шт x 891 грн ....."

и сравниваю то одинаковые
 

kolyazdv

Новичок
где - то что то не так... тока я понять не могу...

вывожу и строку и то что передалося постом... 1-н в 1-н... может какие-то спец символы?

сделал так:

$str = "2шт x 668 грн - Intel...";

$s=$_POST["zak"];
if($s=="2шт x 668 грн - Intel...") echo "ДА!!! <br>";
else echo "нет<br>";



if($_POST["zak"]=="2шт x 668 грн - Intel...") echo "ДА!!! <br>";
else echo "нет<br>";

$str = $_POST["zak"];
if($_POST["zak"]==$str) echo "ДА!!! <br>";
else echo "нет<br>";

ответы:
нет
нет
ДА!!!
 

Anarki

Новичок
Могу предположить, что кодировка страницы(на которой форма) и кодировка скрипта разные.
 

prolis

Новичок
Автор оригинала: kolyazdv
$str = $_POST["zak"];
if($_POST["zak"]==$str) echo "ДА!!! <br>";
ДА!!!
Отлично! :)
Ладно, не все равно ответ не скажу, проверяйте количество символов в строке и переменной
 

kolyazdv

Новичок
всеравно так и не разобрался....

дошло до того что использую тока латиницу....


скажите в чем проблема?

-~{}~ 19.08.08 16:02:

разобрался
для роботоспособности понадобилося

$str = str_replace("\r"," ",$str); :) перевод каретки
 
Сверху