1

トピック自体から、文字列をテキストエリア内のテキスト行と比較する必要があります。

これは、使用可能なデバイスを印刷するプログラムを持っているLinuxサーバーのphpから取得した出力で、テキストエリア内に配置しました。

Device --------------      |        NAme       ------------------- |        Status  

/dev/ttyS0-----------| Profilic |-------------------|Available

/dev/ttyUSB0 -------| Test | ---------------------|Busy

今、私はデバイスの配列を持っています..

$devices = array("/dev/ttyS0", "/dev/ttyUSB0", "/dev/ttyUSB1");

テキストエリアに次のデバイスが存在する場合、文字列の配列を比較するにはどうすればよいですか?

テキストエリアで見つかった場合/dev/ttyS0、文字列の配列に /dev/ttyS0 があるため、true を返します。

Linux から php に出力を取得するサンプル コード。

echo "<textarea>";   
echo stream_get_contents($pipes[1]); 
echo "</textarea>";

私がしたいこと(モックアップコード)

if(/dev/ttyS0 == in the textarea){
  enable this part of code
}

if(/dev/ttyUSB0 == in the textarea){
  enable this part of code
}

and so on....

どうやってやるの?..

4

2 に答える 2

1

デバイス記述子が上記の形式でテキストエリアの行の先頭に表示されると仮定すると、行を繰り返し処理してを探すことができますstrpos($line, $device) === 0

$lines = explode("\n", $teextarea_content);
// loop over array of device descriptors
// and make an array of those found in the textarea
$found_devices = array();
foreach ($devices as $device) {
  // Iterate over lines in the textarea
  foreach ($lines as $line) {
    if (strpos($line, $device) === 0) {
      // And add the device to your array if found, then break
      // out of the inner loop
      $found_devices[] = $device;
      break;
    }
  } 
}
// These are the devices you found...
var_dump($found_devices);

// Finally, enable your blocks.
if (in_array("/dev/ttyUSB0", $found_devices)) {
   // enable for /dev/ttyUSB0
}
// do the same for your other devices as necessary

// OR... You could use a fancy switch in a loop to act on each of the found devices
// Useful if two or more of them require the same action.
foreach ($found_devices as $fd) {
  switch($fd) {
    case '/dev/ttyUSB0':
      // stuff for this device
      break;
    case '/dev/ttyS0':
      // stuff for this device
      break;
    // These two need the same action so use a fallthrough
    case '/dev/ttyS1':
    case '/dev/ttyS2':
      // Stuff for these two...
      break;
  }
}
于 2012-10-03T01:15:23.450 に答える
0

これを行うには、おそらくAJAXを使用することをお勧めします...JQueryはAJAXを非常に単純にします。

しかし、あなたのPHPは、次のようなものを見たいと思うでしょう...

<?php
// Already assuming you have filled out your array with devices...
$dev = $_POST["device"];


// This will loop through all of your devices and check if one matched the input.
foreach($devices as $device) {
    if ($device == $dev) {
        // Whatever you want to do if the device matches.
    }
}
?>

乾杯

于 2012-10-03T01:14:57.647 に答える