0

私は文字列を持っています:

$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-xdata-yから値を取得するには? お気に入り:

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

文字列を配列に分解したいのですが、どうすればよいかわかりません..

4

2 に答える 2

0

この関数は役に立つかもしれません:

int strpos ( string $haystack , string $needle )
干し草の山文字列で最初に出現する針の数値位置を見つけます。

その後、str_split()を使用して文字列を配列に変換し、指定した位置から必要な値を取得できます。

while ループを使用して、から によって返された位置から始まる"次の発生までのすべての値を取得できます。"strpos()

于 2012-11-21T12:27:06.920 に答える
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>foreach

for( $n = 1; $n <= $nodes->length; $n++ )
{
    ${'x' . $n} = (int) $node->getAttribute( 'data-x' );
    ${'y' . $n} = (int) $node->getAttribute( 'data-y' );
}

ただし、代わりにそれらを配列に収集することをお勧めします。その後の処理がはるかに簡単になります。

于 2012-11-21T12:35:59.533 に答える