如何获得字符串的一部分?

时间:2012-11-21 12:23:21

标签: php

我有一个字符串:

$s = '<div data-x="0" data-y="0">Some text asdasdas</div>
<div data-x="0" data-y="-1000">Some text...</div>
<div data-x="0" data-y="-2000">Some text foobar</div>
<div data-x="500" data-y="-3000">Some t..</div>';

字符串可以不同。 Div可以包括类等。

如何从每个Div的 data-x data-y 中获取价值? 像:

$x1 = 0; $y1 = 0;
$x2 = 0; $y2 = -1000;
$x3 = 0; $y3 = -2000;
$x4 = 500; $y4 = -4000;

我想将字符串分解为数组,但后来我不知道该怎么做..

2 个答案:

答案 0 :(得分:0)

此功能可能很有用:

int strpos ( string $haystack , string $needle )
在haystack字符串中查找第一次出现针的数字位置。

然后,您可以使用str_split()将字符串转换为数组,然后从指定位置开始获取所需的值。

您可以使用while循环从"返回的位置开始,在"strpos()的下一次出现之间获取所有值。

答案 1 :(得分:0)

为此使用适当的HTML解析器:

$dom = new DOMDocument;
$dom->loadHTML( $s );
$xpath = new DOMXPath( $dom );
// xpath query: find all div nodes having a data-x and data-y attribute
$nodes = $xpath->query( '//div[@data-x and @data-y]' );
$result = array();
foreach( $nodes as $node )
{
    $result[] = array(
        'x' => (int) $node->getAttribute( 'data-x' ),
        'y' => (int) $node->getAttribute( 'data-y' ),
    );
}

如果你真的想要$x<n>$y<n>样式变量(其中<n>代表一个数字)作为结果(而不是结果数组),那么你可以替换{ {1}}循环使用类似:

foreach

我仍然建议将它们收集在阵列中;这使得之后更容易处理。