Jump to content
php.lv forumi

Regular expression, name un value atlasīšana


SanchoZs

Recommended Posts

Sveiki!

 

Lieta tāda. Es ar file_get_contents savācu info no kādas lapas. Principā tie ir dati, kas sakārtoti tabulās.

 

Sekojošs jautājums - Kā būtu vislvieglāk atlasīt datu nosaukumus un vērtības, ja dati ir sakārtoti sekojoši:

<tr>
<td class="NAME">Savienojums</td>
<td class="VALUE">USB</td>
</tr>
<tr>
<td class="NAME">Lielums</td>
<td class="VALUE">5TB</td>
</tr>

utt. Varbūt kāds var pateikt, kā to info savākt ar preg_match masīvā, teiksim masivs['name'], masivs['value'], utt, bet jāņem vērā, ka td tagam var būt arī norādīti citi atribūti.

 

Vai ir arī kādi citi varianti šajā gadījumā. Pašam prātā nāk čakarēties ar stringu graizīšanu, bet laikam tas būtu pārāk muļķīgi.

Link to comment
Share on other sites

Tam paredzētas http://lv.php.net/dom funkcijas

 

Labi, reku sample:

 

<?php

$HTML = '<tr>
<td class="NAME">Savienojums</td>
<td class="VALUE">USB</td>
</tr>
<tr>
<td class="NAME">Lielums</td>
<td class="VALUE">5TB</td>
</tr>';

$dom = new DOMDocument('1.0', 'utf-8');
@$dom->loadHTML($HTML);
$dom->normalizeDocument();

$xdom = simplexml_import_dom($dom);

if($els = $xdom->xpath("//td"))
{
foreach($els as $el)
{
	print_r($el->attributes());
}
}

Edited by marrtins
Link to comment
Share on other sites

ja $s satur to htmlu

$res = array();
if(preg_match_all('/<tr>.*?<td.*?class=\"name\">(?P<name>.*?)<\/td>.*?<td.*?class=\"value\">(?P<value>.*?)<\/td>.*?<\/tr>/is',$s,$m)) {
 while($key = array_shift($m['name'])) {
array_shift($m['name']); array_shift($m['value']); // tiek vala no tuksumiem
$res[$key] = array_shift($m['value']);
 }
}
print_r($res);

Edited by v3rb0
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...