我有一个字符串:
$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;
我想将字符串分解为数组,但后来我不知道该怎么做..
答案 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
我仍然建议将它们收集在阵列中;这使得之后更容易处理。