Toon posts:

[php] Functie meerdere keren gebruiken in loop (?)

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een while(); lopen met daarin een functie, en die while heeft meerdere resultaten en dus komt de functie die erin staat meerdere keren voor. En dan doet de functie het niet, omdat je een functie maar 1x hoeft/moet definiëren. Maar ik kan de functie ook niet buiten de loop zetten, want dan pakt ie de variabele niet die ik nodig heb.

Dus heeft iemand een idee hoe ik dit kan oplossen?

Alvast bedankt.

Verwijderd

Kun je schematisch weergeven hoe je code in elkaar zit, want ik kan me er zo niks bij voorstellen...

  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

Je definieerd een functie in een loop?

Verwijderd

Topicstarter
Ok...

Heel schematisch ziet mijn code er zo ongeveer uit:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?
// mysql connectie

//query ($query)

while($list = mysql_fetch_object($query)) {

funtion blaat($list->variabele) {

// $list->variabele veranderen etc. etc.

}

echo blaat($list->variabele);

}
?>

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Er is een groot verschil tussen definitie van een functie ...
code:
1
2
3
4
function naam ( $parameter1, $parameter2 )
{
   // ...
}

en een aanroep daarvan:
code:
1
$resultaat = naam ( $var1, $var2 );

De aanroep kun je prima in een loop zetten, en de definitie hoeft (moet, zelfs) maar 1 keer voorkomen

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

ok, je moet die functie 1 keer declareren buiten die while loop. Daarna roep je hem in de while loop aan.

edit:
Dit keer wat drm me net voor ;)

Verwijderd

Topicstarter
Dat had ik zelf wel eerder gedaan, lijkt me logisch :)

Maar zonder die "$list->variabele" kan ik die functie wel maken, maar zal het geen effect hebben op "$list->variabele".

Verwijderd

Op donderdag 24 januari 2002 16:20 schreef Markuz het volgende:
Dat had ik zelf wel eerder gedaan, lijkt me logisch :)

Maar zonder die "$list->variabele" kan ik die functie wel maken, maar zal het geen effect hebben op "$list->variabele".
Ik begrijp niet helemaal wat je bedoeld. Je geeft bij aanroep een variabele mee (bijvoorbeeld $list->variabele) waar die functie die je eerder gedeclareerd hebt wat mee doet (je kunt de variabele ook als reference doorgeven zodat je hem binnen de functie aan kan passen).

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Op donderdag 24 januari 2002 16:20 schreef Markuz het volgende:
Dat had ik zelf wel eerder gedaan, lijkt me logisch :)

Maar zonder die "$list->variabele" kan ik die functie wel maken, maar zal het geen effect hebben op "$list->variabele".
Je geeft de waarde van $list->variabele mee aan de functie als een parameter:
code:
1
2
3
4
5
6
7
8
function a ( $parameter )
{
   echo $parameter, "<br>";
}

$a = 0;
while ( $a ++ < 2 )
   a ( $a );

dit is btw redelijk basic stuff, ik zou ff de manual doorwerken als ik jou was :)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
Zit me net te bedenken dat dit veel makkelijker kan...stom van me, maar regexes is niet mijn sterkste punt, dus zoek ik soms een weg om eromheen te kunnen >:).

Maar dat gaat deze keer dus niet lukken...

Ik heb een Regex en die werkt prima, maar ik wil dat sommige tekens niet erin gebruikt kunnen worden, zoals bijv. de [. Zodat UBB codes uitgesloten kunnen worden in die Regex. Maar hoe doe ik dat?

Ik heb nu: (.*?) en ik d8 dat je met ^ een teken kon 'verbieden' in een Regex...

Iemand enig idee hoe het precies moet...

(zit nog steeds te w8en op m'n boek over Regexes :))

[EDIT: ff replyen op die posts, maareh, als je ff de manual doorleest :), dan kun je toch geen object buiten de loop nemen waar het object wordt 'aangeroepen'? Of heb ik het nu mis?

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Markuz:
(zit nog steeds te w8en op m'n boek over Regexes :))
Staat ook een hoop over regexen (pcre) in de manual van PHP. *hint* ;)
Zef: Dit keer wat drm me net voor ;)
hehehe :D 't blijft een wedstrijdje, he? ;)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
Lees ff m'n edit :)

Verwijderd

Goede Regex tutorial: http://tlc.perlarchive.com/articles/perl/pm0001_perlretut.shtml (dan wel voor perl, maar aangezien je ook perl regexps in php kan gebruiken toch van toepassing) :)

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Markuz:
Lees ff m'n edit :)
Lees nou eerst die eerste 2/3 hoofdstukken van de manual even door.
dit gaat bijv. over functions

dit gaat bijv. over regexen (perl compatible)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
Ik kom echt niet verder met die Manual omdat er niet precies wordt uitgelegd wat wat doet en wat wat is.

En die manual van functies ken ik al lang, dus daar hoef je aub niet mee te komen...

Ik zal m'n vraag dus wel anders stellen, hoe verander ik deze Regex in eenzelfde regex alleen die dan ) veranderd in een ) dus van ) teken naar de code ervan...

Ik heb nu dit:
code:
1
$bericht = preg_replace("'\\[code\](.*?)\\[\/code\]'i","<b>Code:</b><br>\\1", $bericht);

Verwijderd

Binnen de [ code ] blokken? Of gewoon in het algemeen (ik zie namelijk geen code in die regex die ook maar iets doet dat er op lijkt)?

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Op donderdag 24 januari 2002 16:43 schreef Markuz het volgende:
Ik kom echt niet verder met die Manual omdat er niet precies wordt uitgelegd wat wat doet en wat wat is.
tip:
Pak de manual.
Zoek op wat je ongeveer wilt weten.
code:
1
2
3
4
5
6
while ( ! Markuz.begrijpt )
{
   Pak de codesnippet, en voer ze uit
   bekijk de uitvoer
   verander codesnippet
}

Door proberen leer je 100x meer dan door vragen stellen.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
Dit is enkel nog de regex van [code ] hier je code [ /code]

Omdat ik dus niet weet hoe ik die ) in die regex kan ombuigen tot ) heb ik enkel de 'schone' code neer geplaatst van die Regex.

En ik bedoelde binnen diezelfde regex jah...

Alvast bedankt..

Verwijderd

Topicstarter
Op donderdag 24 januari 2002 16:50 schreef drm het volgende:

[..]

tip:
Pak de manual.
Zoek op wat je ongeveer wilt weten.
code:
1
2
3
4
5
6
while ( ! Markuz.begrijpt )
{
   Pak de codesnippet, en voer ze uit
   bekijk de uitvoer
   verander codesnippet
}

Door proberen leer je 100x meer dan door vragen stellen.
Wat denkje wat ik heb gedaan?

Jah goed zo, dat dus...

Verwijderd

Op donderdag 24 januari 2002 16:51 schreef Markuz het volgende:
En ik bedoelde binnen diezelfde regex jah...
Wat ik bedoelde is niet zozeer binnen die regex, maar binnen de code-tags. Kortom wil in alles wat tussen [ code] en [/code ] staat een ( vervangen wordt door &#xxx;?

Verwijderd

Topicstarter
Sorry, typfoutje :P

Ik bedoelde binnen de [ code] [ /code] jah :)

Verwijderd

Op donderdag 24 januari 2002 16:55 schreef Markuz het volgende:
Sorry, typfoutje :P

Ik bedoelde binnen de [ code] [ /code] jah :)
Maak dan gebruik van de /e modifier:
code:
1
$string = preg_replace("/\\\[code\\](.+)\\\[\\/code\\]/e", "doeiets('\\1')", $string);

In de functie doeiets (die je nog moet maken) kun je met str_replace de haakjes vervangen door &xxx; codes. De functie krijgt 1 parameter en retourneerd de aangepaste variabele.
code:
1
2
3
4
5
function doeiets($str)
{
  // Doe wat je wilt hier
  return $str;
}

Verwijderd

Topicstarter
Kan het niet anders? Zonder die functie, want dan krijg ik hetzelfde probleem als waar het topic over ging |:(

Verwijderd

Op donderdag 24 januari 2002 17:10 schreef Markuz het volgende:
Kan het niet anders? Zonder die functie, want dan krijg ik hetzelfde probleem als waar het topic over ging |:(
Tekst opsplitsen in delen (op [/?code] tags) en dan op de oneven delen wel die functie uitvoeren en op de even niet. Maar verder is dit (met regexes) de manier waarop het hoort en ook kan.

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Markuz:
Kan het niet anders? Zonder die functie, want dan krijg ik hetzelfde probleem als waar het topic over ging |:(
*zucht*

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
Kun je wel zuchten maar 't is zo...

Verwijderd

Topicstarter
Hehe, ik heb het eindelijk gevonden :)

Ik had enkel in de regex moeten zettenn die bijv. : + ) vervangt in een smiley:

(^[code])

Toch bedankt :)

  • Markuzi
  • Registratie: November 2000
  • Laatst online: 25-02-2025
Op donderdag 24 januari 2002 17:34 schreef Markuz het volgende:
Hehe, ik heb het eindelijk gevonden :)

Ik had enkel in de regex moeten zettenn die bijv. : + ) vervangt in een smiley:

(^[code])

Toch bedankt :)
Leuke username, Markuz (Sorry kon het niet laten :P ;))
Pagina: 1