2013-04-11 5 views
0

Je recroqueville et obtenir les éléments suivants:Grab au sein de Curl

echo $contents 

qui me donne ceci:

<td class="fomeB1" >Balance: $ 1.02</td> 

$13.32 fee 
$15.22 fee 2 

Comment puis-je prends juste le 1.02 - tout après le $ et devant la </td>

Je veux dénuder via php et mettre l'argent dans la variable $ solde ....

Toute sorte d'aide que je peux obtenir est grandement appréciée!

+0

boucle assez sûr est pour obtenir des données à partir d'une page Web – lemondrop

Répondre

1

oui vous pouvez utiliser exactement ce que vous voulez

preg_match("/(?<=Balance:).*?(?=<)/", "<td class='fomeB1'>Balance: $ 1.02</td>", $match); 
print_r(str_replace("$"," ",$match)); 

// Prints: 
Array 
(
    [0] => 1.02 
) 
+1

je pense qu'il veut le valeur réelle 1.02 dans un tableau. – bestprogrammerintheworld

1

Ceci est probablement une mauvaise façon de le faire ... mais

$pieces = explode("$ ", $contents); 
$pieces = explode("</td>", $pieces[1]); 
$balance = $pieces[0]; 

Ou vous pouvez utiliser une expression régulière. Quelque chose comme ceci:

\$\s\d+.{1}\d+ 

Vous pouvez tester l'expression régulière ici: RegExpPal

Vous pouvez utiliser preg_match() pour analyser l'équilibre en utilisant l'expression régulière. preg_match()

+0

Nous vous remercions de votre aide, mais si j'ai plus de $ sur cette page ... pouvons-nous juste trouver ceux avec le mot équilibre devant lui? – thevoipman

+0

oui avec une expression régulière –

+0

Je ne suis pas assez intelligent pour comprendre comment/quoi faire avec l'expression régulière, pouvez-vous s'il vous plaît fournisseur plus de conseils? – thevoipman

1

Fondamentalement maintenant vous avez une chaîne

$str = '<td class="fomeB1" >Balance: $ 1.02</td>'; 

Ai-je raison?

maintenant essayer ceci:

$txt = getTextBetweenTags($str, "td"); 
echo $txt;//Balance: $ 1.02 

Maintenant, utiliser explode:

$pieces = explode($txt,' $ '); 
echo $pieces[0]; //Balance: 
echo $pieces[1]; //1.02 

UPDATE: essayer cela, il devrait fonctionner si exploser des œuvres pour une chaîne:

$pieces = explode("Balance: $ ", $str); 
$pieces = explode("</td>", $pieces[1]); 
$balance = $pieces[0]; //1.02 
+0

Oui, mais j'ai plusieurs "$" sur la même page .... mais un seul avec l'équilibre – thevoipman

+0

connaissez-vous la position de l'équilibre alors, si ce sera toujours le premier '$' que vous voulez? –

+1

J'ai mis à jour la question en haut ... le $ que je veux avoir toujours l'équilibre: en face de lui ... d'autres n'ont pas le mot "Balance:" – thevoipman

1
$str = '<td class="fomeB1" >Balance: $ 1.02</td>'; 
$r1 = preg_replace('/.*?\$[ ](.*?)<.*/', '\1', $str); //match between after first '$ ' ,and first '<' ; 
echo $r1; //1.02 

ou

$r2= preg_replace('/^<td class="fomeB1" >Balance\: \$ (.*?)<\/td>$/', '\1', $str); //match between after <td class="fomeB1" >Balance: $ and </td> 

echo $r2; //1.02 

ou mettre à jour

$str = ' <td class="fomeB1" >Balance: $ 1.02</td> 

$13.32 fee 
$15.22 fee 2'; 

$r1 = preg_replace('/.*?\$[ ](.*?)<.*/s', '\1', $str); //match between after first '$ ' ,and first '<' ; 
echo $r1.'<br>'; //1.02 
+0

J'ai essayé ceci et se vide – thevoipman

+0

est '