floatval(substr) geeft altijd 0

Status
Niet open voor verdere reacties.

dvdbrander

Gebruiker
Lid geworden
13 apr 2010
Berichten
34
ik heb een script:

PHP:
$totaal=floatval(substr($str,strpos($str,"</a></td><td>"),strpos($str,"</td><td>€")-strpos($str,"</a></td><td>")-2));
en dit geeft altijd 0
als ik ga debuggen zie ik dat de substr "2" returnt, dat hoort zo.
hoe komt dit en hoe los ik dit op?
 
Substring returned een string... tenzij die string toevallig iets bevat dat geformat is als een getal zal het 0 opleveren.

Probeer het eens in twee stappen? Eerst de substr() opslaan en echo'en, en dan daar een floatval overheen doen en die tonen? Wat is dan de exacte uitkomst?
 
Hrm, vreemd. Als ik een simpele test doe gaat het wel goed ( met floatval( "2" ) bijv ) dus het zou moeten werken.

Kun je de return van de substr eens echo'en en in de broncode kijken? Het zou kunnen misschien dat er nog iets bij zit dat niet op het scherm getoond wordt, dan zou het wel 0 worden.

Dit bijvoorbeeld, levert 0 op, terwijl je op het scherm 2 ziet in de echo:

PHP:
floatval( "<span>2" );
 
kan het zijn dat <br> het probleem veroorzaakt?
ik krijg trouwens dit:
<tr>A:</a></td><td>2:A<br><td>
met $a=substr($str,strpos($str,"</a></td><td>"),strpos($str,"</td><td>€")-strpos($str,"</a></td><td>")-2);
echo "A:".$a.":A";
(A::A als debug)
 
Laatst bewerkt:
Het probleem is dat je volledige string "</a></td><td>2:" is, en niet alleen "2". Omdat het eerste teken van je string een "<" is weet floatval niet wat te doen, dus maakt ie er 0 van.

Je zult je strpos beter af moeten stellen denk ik, zodat ze echt alleen de 2 teruggeven.
 
hee, bedankt.
ik weet nu ook waarom ik de mist in ben gegaan.
ik dacht dat strpos aan het einde van de string telde.
een +13 en een verandering van plaats losde het op:
PHP:
$a=substr($str,strpos($str,"</a></td><td>")+13);
    $str=$str."</td><td>€".$res["prijs"];

    echo "A:".$a.":A";
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan