Only variables can be passed by reference

Gestart doorMilan12 reacties45 weergaven

13 berichten · pagina 1 van 1

Milan

Lid · Topicstarter

Berichten
8.602
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Only variables can be passed by reference...

Iemand die weet hoe dit op te lossen bij preg_replace?

$tijd = preg_replace($tijdPattern, , $weer);

Hij is nog niet helemaal af, maar krijg de hele tijd deze error cry
0
Thom

Lid

Berichten
10.654
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Wat is $weer en wat is $tijdPattern?
0
Berichten
6.485
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
een van de twee is een array kan dat?

Ik kreeg ooit die error toen ik iets met een array had waar gewoon een plat ding in moest.
0
Milan

Lid · Topicstarter

Berichten
8.602
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Heb het nu anders, maar hoe kan ik de tijd uit een
halen? Heb het nu zo maar nu krijg ik de tijd los en haalt het alleen de tags weg, en blijft niet alleen de tijd over:

Origineel wat ik binnen krijg om te ontleden:

<tr>
            <td style="height: 45px; width: 120px; text-align: center; font-size: 16pt; padding-top: 6px">20:00</td>
            <td style="height: 45px; width: 70px; text-align: center; vertical-align: middle"><img src=/gimg/v2/iconen_color_bg/40x40/L.png alt=Regen title=Regen></td>
            <td style="height: 45px; font-size: 16pt; text-align: left; padding-top: 6px">15,7&deg;C</td>
        </tr>
        <tr>
            <td style="width: 120px; text-align: center">
                <img src=/gimg/v2/iconen_wind/wind40x40/W.png alt=Wind uit het W-en><br>
            </td>
            <td style="width: 70px; text-align: left; font-size: 16pt; vertical-align: middle">2 Bft<br>&nbsp;</td>
            <td style="text-align: left">
                Neerslag: 0,0 mm<br />


En hoe ik de tijd eruit probeer te vissen:

[COLOR= #0000BB]<?php
$tijdPattern[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000]"#<td style="height: 45px; width: 120px; text-align: center; font-size: 16pt; padding-top: 6px">([0-9 :]{5})</td>#si"[/COLOR][COLOR= #007700];[/COLOR]

[COLOR= #0000BB]$tijd[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/preg_replace"]preg_replace[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$tijdPattern[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #DD0000]"1"[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$weer[/COLOR][COLOR= #007700][[/COLOR][COLOR= #0000BB]0[/COLOR][COLOR= #007700]]);[/COLOR]
[COLOR= #FF8000]//var_dump ($tijdp);[/COLOR]

[URL="http://www.php.net/echo"]echo[/URL] [COLOR= #0000BB]$tijd[/COLOR][COLOR= #007700];[/COLOR]


Wat ik hierbij terug krijg:

<tr>
            20:00
            <td style="height: 45px; width: 70px; text-align: center; vertical-align: middle"><img src=/gimg/v2/iconen_color_bg/40x40/L.png alt=Regen title=Regen></td>
            <td style="height: 45px; font-size: 16pt; text-align: left; padding-top: 6px">15,7&deg;C</td>
        </tr>
        <tr>
            <td style="width: 120px; text-align: center">
                <img src=/gimg/v2/iconen_wind/wind40x40/W.png alt=Wind uit het W-en><br>
            </td>
            <td style="width: 70px; text-align: left; font-size: 16pt; vertical-align: middle">2 Bft<br>&nbsp;</td>
            <td style="text-align: left">
                Neerslag: 0,0 mm<br />


Zoals je ziet zijn hier alleen de html tags die ik in de match heb opgegeven weggehaald, maar ik wil dat alleen de tijd overblijft
0
Berichten
93.699
Reputatie
0
Punten
1,27
Lid sinds
Laatst gezien
preg_match gebruiken
0
Milan

Lid · Topicstarter

Berichten
8.602
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Bij preg_match krijg ik iint(1) 1 terug..
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
[COLOR= #0000BB]<?php
$html[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000]<tr>
            <td style="height: 45px; width: 120px; text-align: center; font-size: 16pt; padding-top: 6px">20:00</td>
            <td style="height: 45px; width: 70px; text-align: center; vertical-align: middle"><img src=/gimg/v2/iconen_color_bg/40x40/L.png alt=Regen title=Regen></td>
            <td style="height: 45px; font-size: 16pt; text-align: left; padding-top: 6px">15,7&deg;C</td>
        </tr>
        <tr>
            <td style="width: 120px; text-align: center">
                <img src=/gimg/v2/iconen_wind/wind40x40/W.png alt=Wind uit het W-en><br>
            </td>
            <td style="width: 70px; text-align: left; font-size: 16pt; vertical-align: middle">2 Bft<br>&nbsp;</td>
            <td style="text-align: left">
                Neerslag: 0,0 mm<br />[/COLOR][COLOR= #007700];[/COLOR]

[COLOR= #0000BB]$tijd[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/explode"]explode[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]padding-top: 6px">[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$html[/COLOR][COLOR= #007700]);[/COLOR]
[COLOR= #0000BB]$tijd[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/explode"]explode[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]<[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$tijd[/COLOR][COLOR= #007700][[/COLOR][COLOR= #0000BB]1[/COLOR][COLOR= #007700]]);[/COLOR]
[URL="http://www.php.net/var_dump"]var_dump[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$tijd[/COLOR][COLOR= #007700][[/COLOR][COLOR= #0000BB]0[/COLOR][COLOR= #007700]]);[/COLOR]

smile
0
Milan

Lid · Topicstarter

Berichten
8.602
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Lennard schreef:
[COLOR= #0000BB]<?php
$html[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000]<tr>
            <td style="height: 45px; width: 120px; text-align: center; font-size: 16pt; padding-top: 6px">20:00</td>
            <td style="height: 45px; width: 70px; text-align: center; vertical-align: middle"><img src=/gimg/v2/iconen_color_bg/40x40/L.png alt=Regen title=Regen></td>
            <td style="height: 45px; font-size: 16pt; text-align: left; padding-top: 6px">15,7&deg;C</td>
        </tr>
        <tr>
            <td style="width: 120px; text-align: center">
                <img src=/gimg/v2/iconen_wind/wind40x40/W.png alt=Wind uit het W-en><br>
            </td>
            <td style="width: 70px; text-align: left; font-size: 16pt; vertical-align: middle">2 Bft<br>&nbsp;</td>
            <td style="text-align: left">
                Neerslag: 0,0 mm<br />[/COLOR][COLOR= #007700];[/COLOR]

[COLOR= #0000BB]$tijd[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/explode"]explode[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]padding-top: 6px">[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$html[/COLOR][COLOR= #007700]);[/COLOR]
[COLOR= #0000BB]$tijd[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/explode"]explode[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]<[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$tijd[/COLOR][COLOR= #007700][[/COLOR][COLOR= #0000BB]1[/COLOR][COLOR= #007700]]);[/COLOR]
[URL="http://www.php.net/var_dump"]var_dump[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$tijd[/COLOR][COLOR= #007700][[/COLOR][COLOR= #0000BB]0[/COLOR][COLOR= #007700]]);[/COLOR]
smile
Lennard je bent een schatje <3
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
Daar doe ik t voor coool
0
Berichten
6.485
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
explode is alleen wel een stuk minder snel dan preg_match.

preg_match($pattern,$html,$matches);

$matches is een array. Dus met $matches[0] kan je het resultaat halen.

Als je meerdere dingen in een code zoekt kan je preg_match_all gebruiken. Maar dan moet je dus door de $matches array zoeken naar wat je wilt.
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
Rogier schreef:
explode is alleen wel een stuk minder snel dan preg_match.
Dat dacht ik ook, maar een testje:
[COLOR= #0000BB]<?php
$str[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000]a,b[/COLOR][COLOR= #007700];[/COLOR]

[COLOR= #0000BB]$begin[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/microtime"]microtime[/URL][COLOR= #007700]([/COLOR]true[COLOR= #007700]);[/COLOR]
[URL="http://www.php.net/for"]for[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$i[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]1[/COLOR][COLOR= #007700];[/COLOR] [COLOR= #0000BB]$i[/COLOR] [COLOR= #007700]<=[/COLOR] [COLOR= #0000BB]1000000[/COLOR][COLOR= #007700];[/COLOR] [COLOR= #0000BB]$i[/COLOR][COLOR= #007700]++)
{[/COLOR]
    
    [COLOR= #0000BB]$v[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/explode"]explode[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000],[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$str[/COLOR][COLOR= #007700]);
    
}[/COLOR]
[URL="http://www.php.net/echo"]echo[/URL] [COLOR= #DD0000]explode: [/COLOR][COLOR= #007700].([/COLOR][URL="http://www.php.net/microtime"]microtime[/URL][COLOR= #007700]([/COLOR]true[COLOR= #007700]) -[/COLOR] [COLOR= #0000BB]$begin[/COLOR][COLOR= #007700]).[/COLOR][COLOR= #DD0000]<br />[/COLOR][COLOR= #007700];[/COLOR]

[COLOR= #0000BB]$begin[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/microtime"]microtime[/URL][COLOR= #007700]([/COLOR]true[COLOR= #007700]);[/COLOR]
[URL="http://www.php.net/for"]for[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$i[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]1[/COLOR][COLOR= #007700];[/COLOR] [COLOR= #0000BB]$i[/COLOR] [COLOR= #007700]<=[/COLOR] [COLOR= #0000BB]1000000[/COLOR][COLOR= #007700];[/COLOR] [COLOR= #0000BB]$i[/COLOR][COLOR= #007700]++)
{[/COLOR]
    
    [URL="http://www.php.net/preg_match"]preg_match[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]"@(.+?),(.+?)@is"[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$str[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$v[/COLOR][COLOR= #007700]);
    
}[/COLOR]
[URL="http://www.php.net/echo"]echo[/URL] [COLOR= #DD0000]preg_match: [/COLOR][COLOR= #007700].([/COLOR][URL="http://www.php.net/microtime"]microtime[/URL][COLOR= #007700]([/COLOR]true[COLOR= #007700]) -[/COLOR] [COLOR= #0000BB]$begin[/COLOR][COLOR= #007700]).[/COLOR][COLOR= #DD0000]<br />[/COLOR][COLOR= #007700];[/COLOR]


output:

explode: 2.3311731815338
preg_match: 4.8953850269318


(explode is dus 0,0000026 seconde sneller dan preg_match clown)

Al is preg_match hier wel voor gemaakt inderdaad, dus wellicht is het beter om die te gebruiken. Maar explode vind ik veel intuïtiever werken; je ziet dan meteen wat je doet, en reguliere expressies snap ik na tig jaar nog steeds vrij weinig van; die dingen werken nooit bij mij.
En daarom doe ik eigenlijk alles met explode(). pompom
En ook al is explode misschien in sommige situaties trager; het scheelt ook weer geen seconden.
0
Milan

Lid · Topicstarter

Berichten
8.602
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
ik snap ook niks van die regex dingen
0
Berichten
6.485
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Ik vind regex fijner, want je kan in vrijwel elke programmeertaal gebruik makn van reguliere expresies. En zo lastig is het ook niet. yummie
0

Jouw reactie

Deel je idee, stel een vraag of help een ander verder.

Editor laden…

Praat mee met de One2xs-community.

Inloggen om te reageren