Regex ile Argümanlar

3 Cevap php

I would like to know how to split this string:
command arg1 arg2 arg3
In this array:

[arg1,arg2,arg3]

BUT if the user types:
command "arg1 still arg1" arg2
The array will be:

[arg1 still arg1, arg2]

/>

3 Cevap

PHP otomatik olarak sormak ne yapar.

PHP 5.3 var ve bu kodu çağırarak

<?php
  print $argc . "\n";

  for ($i = 0; $i < $argc; $i++) {
    print $argv[$i] . "\n";
  }
?>

php ./argv.php Test "Test 23" "Test 34", ben aşağıdaki çıktıyı elde

sunradio:~ kiamlaluno$ php ./argv.php Test "Test 23" "Test 34"
4
./argv.php
Test
Test 23
Test 34
sunradio:~ kiamlaluno$

Bunları istediğiniz gibi ilk argüman Taking off, $argv tüm argümanları içerir. Bu kolayca array_pop() ile yapılabilir.

Bu gibi normal bir ifade kullanın:

^[^ ]+(?: ("[^"]+"|[^ ]+))*$

Ifadesi "[^"]+"|[^ ]+ başlar ve tırnak işareti ile biten bir argüman, ya da bir sonraki boşlukta biten bir argüman ya da eşleşir.

Senin yerine bir regex daha, php bunun için strtok'un gibi bir şey kullanmak isteyebilirsiniz inanıyorum.

Belgelerin Yorumu bakınız: http://www.php.net/manual/en/function.strtok.php#94463