2012-11-21 121 views
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>'; 

字符串可以是不同的。申報單可以包括類等

如何從數據-X數據y各事業部的值? 像:

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

我想串爆炸到一個數組,但我不知道該怎麼辦..

回答

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'); 
} 

我仍然建議在代替儘管陣列收集;之後使得處理更容易。

+0

謝謝!這是解決我的問題。 – user1802209

0

這個功能可能是有用的:

int strpos (string $haystack , string $needle)
找到乾草堆串中第一次出現針的數字位置。

然後,您可以使用str_split()將字符串轉換爲數組,然後從指定的位置開始獲取所需的值。

您可以使用while循環獲取""之間的所有值,從strpos()返回的位置開始。

+0

是的,但可以有指定的類。或者data-x的長度可能很長。 – user1802209

+0

看到我編輯的答案。 – hermann