0

我正在寻找位于字符串中的数据,如下所示: string(22) "width="16" height="16""

我希望使用 explode 函数来获取 16 和 16 值并将它们放入我可以使用的数组中。但我不知道如何$num在 PHP 的explode 函数中定位。通常我只有一个可以使用的逗号。

像这样的东西,但我知道这是错误的:

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

所有这一切都是:array(1) { [0]=> string(5) "Array" }

4

7 回答 7

4

explode() 不会为您执行此操作;它只是在常量分隔符(例如逗号)上拆分字符串,您需要做的是从引号之间提取文本。在这个简单的例子中,您可以使用 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

试试这个

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 回答
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 回答
0

如果它们将成为字符串中的唯一数字 (1234567890),您可以使用正则表达式来选择这些值。preg_filter()会做这样的事情 - 只需让你的“替换”用自己替换匹配项('$1')。

于 2012-10-12T18:28:23.140 回答
0

如何摆脱双引号并在空间上爆炸。然后 $sizes 看起来像:

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

然后,您可以在 equals 上分解 $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 回答
0

你可以简单地使用

explode("\"",$string);
于 2014-02-11T12:04:58.793 回答