[PHP] Grootte van 1 "array-deel" bepalen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Enfer
  • Registratie: Februari 2004
  • Laatst online: 18-09 16:32
Hey tweakers :)

Ik zit met een probleem(pje).. Ik wil dus graag dat een bepaald gedeelte van een array word geprint alleen als hij 2 cijfers bevat (geen letters, geen 4 cijfers, o.i.d). Ik zit nu al een tijdje voor een oplossing te zoeken.. Zo heb ik het al geprobeerd met de functie:
code:
1
$result = count ($mr2[6]);

geprobeerd, maar dat geeft de uitkomst 1, terwijl er wel degelijk 2 cijfers in dat gedeelte van die array zitten..

Waar er dus uit moet komen:
code:
1
2
3
4
5
6
if ($mr2[6] contains 2 digits){
echo "$mr2[6]";
}
if ($mr2[6] doesnt contains 2 digits){
echo "";
}


Hoe o hoe los ik dit op?

*het gaat hier om PHP4*

[ Voor 20% gewijzigd door Enfer op 03-10-2005 18:30 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Wat is de precieze structuur van $mr2?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Enfer
  • Registratie: Februari 2004
  • Laatst online: 18-09 16:32
[code]
$character2 = "http://hiscore-web.runescape.com/aff/runescape/hiscorepersonal.cgi?username=$_POST[char2]";
$mr2= file ($character2);
[code]
en in de source staat zoiets als dit (de source zelf is te lang, dus ff ingekort:
code:
1
2
3
4
5
6
7
8
9
10
11
12
Regel #5 : <td align="right">63,875</td><td align="right">
Regel #6 : 1,206
Regel #7 : </td><td align="right">
Regel #8 : 8,543,119
Regel #9 : </td></tr>
Regel #10 : <tr><td>[img]"http://www.runescape.com/img/hiscores/attack.gif"[/img]</td><td>&nbsp;</td>
Regel #11 : <td><a href="hiscoreuser.cgi?username=nepica&category=1" class=c>Attack</a></td>
Regel #12 : <td align="right">87,111</td><td align="right">
Regel #13 : 70
Regel #14 : </td><td align="right">
Regel #15 : 789,319
etc etc....


waar $mr2[6] (dus) staat voor 1,206 (=regel 6 ;) )

[ Voor 44% gewijzigd door Enfer op 03-10-2005 18:25 ]


Acties:
  • 0 Henk 'm!

  • rvtk
  • Registratie: Juni 2001
  • Laatst online: 19-09 16:06
Nee, volgens mij staat er 1 string met daarin 2 getallen gescheiden door 1 komma.

Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Wat bedoel je met 2 cijfers? In de zin van array(24, 43) (willekeurige cijfers even als voorbeeld of 43 (en niet 4 bijvoorbeeld)?
rvtk schreef op maandag 03 oktober 2005 @ 18:31:
Nee, volgens mij staat er 1 string met daarin 2 getallen gescheiden door 1 komma.
Dan zou het zo kunnen:
PHP:
1
2
3
4
if ( preg_match("/\d+,\d+/", $mr[6]) )
{
  print $mr[6];
}

[ Voor 58% gewijzigd door Michali op 03-10-2005 18:56 ]

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Ja, dat is dus een stuk tekst (een string) en geen array. 8)7

Kijk eens naar explode, al is dat, zeker in dit geval, ook geen waterdichte oplossing.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Enfer
  • Registratie: Februari 2004
  • Laatst online: 18-09 16:32
@michali
van jou oplossing snap ik even niets, hij werkt niet?

http://www.r3con.ath.cx/nick/count.php

en hoe zit dat met explode.. hoe controleer ik precies of er precies twee digits inzitten? :?

Acties:
  • 0 Henk 'm!

Verwijderd

Problem? schreef op maandag 03 oktober 2005 @ 18:43:

en hoe zit dat met explode.. hoe controleer ik precies of er precies twee digits inzitten? :?
Leren programmeren. Daarbij hoort: het kunnen vinden van documentatie, het kunnen lezen van documentatie en het kunnen bedenken van (simpele) algoritmes waarbij je gebruik kunt maken van een function reference, zoals in de PHP manual.

In dit geval zul je vooral moeten kijken naar de string functies, en eventueel de array functies. En vooral niet te snel, te veel willen. Zorg eerst dat je de basis begrijpt. Elke programmeur schrijft weleens iets eenvoudigs om te zien hoe iets precies werkt.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

PHP:
1
2
3
4
5
$arr1 = explode(',', '12,34,123');
$arr2 = explode(',', '48,23,59');

print_r($arr1);
print_r($arr2);

Kijk maar eens wat dat laat zien.

En die regular expression van Michali werkt inderdaad niet, dat zou eerder zoiets moeten zijn:
PHP:
1
2
3
4
if ( preg_match("/(\d+,?)*/", $mr[6]) )
{
  print $mr[6];
}

En zelfs die werkt niet perfect. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Ik was de laatste / vergeten (jij ook overigens -NMe- :P). Nu moet ie wel werken.

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • Enfer
  • Registratie: Februari 2004
  • Laatst online: 18-09 16:32
nog even 1 vraagje, hoe zit het dan als ik met explode wil kijken of er een getal staat (puur een getal, zoals 5, of 70 ofzo.. zonder komma's of punten of wat dan ook)///

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Problem? schreef op maandag 03 oktober 2005 @ 18:57:
nog even 1 vraagje, hoe zit het dan als ik met explode wil kijken of er een getal staat (puur een getal, zoals 5, of 70 ofzo.. zonder komma's of punten of wat dan ook)///
Kan niet met explode. Daar zijn weer andere functies voor. is_numeric of is_int bijvoorbeeld. Overigens doet zo'n regexp zoals hierboven dat al automatisch voor je.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Enfer
  • Registratie: Februari 2004
  • Laatst online: 18-09 16:32
naja.. ondanks dat ik er nog niet ben uitgekomen ben ik er in ieder geval wel ietsjes mee opgeschoten.. bedankt iedereen! :)

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Ik snap nog steeds niet wat je met 2 digits bedoeld? is het een string die lengte 2 moet hebben en beide chars digits? of is het een numeriek veld wat dus tussen 9 en 100 moet liggen?
of zit er weer een array in?

Maar zoals ik het nu zie dan heb je dus een komma seperated string waar je verschillende getallen in heb. Dan kun je idd gewoon explode doen en het aantal elementen van de restulterende array tellen.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Overigens is het misschien een idee om HTML te strippen:
PHP:
1
$inhoud_van_file = preg_replace("/<[^>]*>/", '', $inhoud_van_file);

Vervolgens houd je als het goed is alleen pure tekst over; als ik het zo zie in je voorbeeld zelfs alleen puur die getallen die je hebben wil.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1