0

次のような文字列にあるデータを取得しようとしています。 string(22) "width="16" height="16""

爆発関数を使用して 16 と 16 の値を取得し、使用できる配列に配置することを望んでいました。$numしかし、PHP の爆発関数でをターゲットにする方法がわかりません。通常、使用できるコンマがあります。

このようなものですが、私はこれが間違っていることを知っています:

$size = "width="16" height="16""
$sizes = explode('""', $size);

これが行うことは次のとおりです。array(1) { [0]=> string(5) "Array" }

4

7 に答える 7

4

爆発()はあなたのためにこれを行いません。定数区切り文字 (コンマなど) で文字列を分割するだけで、引用符の間からテキストを抽出する必要があります。この単純なケースでは、 preg_match_all() を使用してジョブを実行できます。

 $str = 'width="16" height="16"';
 preg_match_all('/\"(.*?)\"/', $str, $matches);
 print_r($matches);

戻り値

 Array
 (
   [0] => Array
     (
       [0] => "16"
       [1] => "16"
     )

   [1] => Array
     (
       [0] => 16
       [1] => 16
     )
 )

-- 言い換えると、preg_match_all() 呼び出しの後、$matches[1] には、パターンに一致する値の配列が含まれます。この場合は、目的の属性値です。

于 2012-10-12T18:30:47.317 に答える
2

奇妙な変数。

いずれにせよ、分割コマンドを使用してみませんか?

$size = 'width="16" height="16"';

$split_sizes = explode('"',$size);
$count = count($split_sizes);

for ( $i = 1; $i < $count; $i += 2) {
    $sizes[] = $split_sizes[$i];
}

ここでの前提は、文字列には、引用符で囲まれていないキーと二重引用符で囲まれた値のペアのみが入力されるということです。

于 2012-10-12T18:28:54.910 に答える
1

これは私がそれを行う方法です:

$size = 'width="16" height="16" maxlength="200"';
preg_match_all('/([A-Za-z\-]+)=/',$size,$fields);
preg_match_all('/[A-Za-z\-]+="([A-Za-z0-9_\-]+)"/',$size,$values);
var_dump($fields[1]);
var_dump($values[1]);

// gives you
array(3) {
  [0]=>
  string(5) "width"
  [1]=>
  string(6) "height"
  [2]=>
  string(9) "maxlength"
}
array(3) {
  [0]=>
  string(2) "16"
  [1]=>
  string(2) "16"
  [2]=>
  string(3) "200"
}
于 2012-10-12T18:39:43.997 に答える
1

これを試して

preg_match_all('/"([^"]+)"/', 'width="16" height="16"', $matches);
$result = $matches[1];

/* print_r($result);
Array
(
        [0] => 16
        [1] => 16
)
*/
于 2012-10-12T18:36:18.277 に答える
0

文字列内の唯一の数字 (1234567890) になる場合は、正規表現を使用して値を選択できます。preg_filter()はそのようなことを行います-「置換」で一致を自分自身に置き換えるだけです( '$1')。

于 2012-10-12T18:28:23.140 に答える
0

簡単に使用できます

explode("\"",$string);
于 2014-02-11T12:04:58.793 に答える
0

二重引用符を取り除き、スペースで爆発するのはどうですか。$sizes は次のようになります。

{ 
    [0]=> width=16
    [1]=> height=16
}

次に、等しい値で $sizes の各スライスを分解して値を取得できます。

{
    [0] => width
    [1] => 16
}
{
    [0] => height
    [1] => 16
}

例コード:

<?php

$size = 'width="16" height="16";
//get rid of all double quotes
$size = str_replace('"', '', $size);
$sizes = explode(' ', $size);
//show what is in the sizes array
print_r($sizes);
//loop through each slide of the sizes array
foreach($sizes as $val)
{
    $vals = explode('=', $val);
//show what is in the vals array during this iteration
    print_r($vals);
}

?>
于 2012-10-12T18:47:20.793 に答える