abonnement Unibet Coolblue
pi_71381694
quote:
Op maandag 27 juli 2009 23:33 schreef F4T4L_3RR0R het volgende:

[..]

Heb op aanraden (don't ask why) al zoveel mogelijk regex vervangen door alternatieven.

Maar ben toch benieuwd naar de regex oplossing.
1
2
3
<?php
$regex 
'/(\d{1,2})-(\d{1,2})-(\d{4})\s+(\d{1,2}):(\d{2})/';
?>

1 of 2 cijfers voor dag, 1 of 2 cijfers voor maand, 4 cijfers voor jaar, dan ten minste 1 spatie (of tab), 1 of 2 cijfers voor uur en 2 cijfers voor minuten.
  maandag 27 juli 2009 @ 23:49:26 #27
110933 F4T4L_3RR0R
R.I.P. webicon ;(
pi_71382000
De datum heb ik niet nodig he.
Een ballonvaarder die door de mand valt is nooit grappig...
  dinsdag 28 juli 2009 @ 01:52:42 #28
110933 F4T4L_3RR0R
R.I.P. webicon ;(
pi_71384333
Heb het toch maar met explode en substr gedaan...
Een ballonvaarder die door de mand valt is nooit grappig...
pi_71385317
Bizar die newline code.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
        function striphtml($trimmed)
        {
        $arrhtml = explode("\n", $trimmed);
        $resulthtml = array();

        for ($ihtml = 2, $sizehtml = count($arrhtml); $ihtml < ($sizehtml - 1); $ihtml++) {
            $resulthtml[] = $arrhtml[$ihtml];
            }

        return $resulthtml;
        }

        $clean = implode("\n", striphtml($trimmed));
?>

Kan toch gewoon als
1
2
3
4
5
6
7
<?php
        function striphtml($trimmed) {
           return array_slice(explode("\n", $trimmed), 2);
        }

        $clean = implode("\n", striphtml($trimmed));
?>

Raar ook dat een striphtml geen tags weghaald of iets anders html gerelateerds doet.

Voor de tijd:

1
2
3
4
5
6
<?php
if(preg_match('/([01]?[0-9]|2[0-4]):[0-5][0-9]/', $string, $m)) {
   $time = $m[0];
} else {
  // geen tijd gevonden
}
  FOK!-Schrikkelbaas dinsdag 28 juli 2009 @ 08:14:36 #30
1972 Swetsenegger
Egocentrische Narcist
pi_71385610
quote:
Op maandag 27 juli 2009 23:33 schreef SuperRembo het volgende:

[..]

Ja dan vraag je ook wel om problemen eigenlijk
Altijd eerst berekeningen uitvoeren, en pas op het allerlaatst omzetten naar tekst.
Ja dat bedacht ik me ook toen ik de vreemde resultaten zag
pi_71386545
quote:
Op dinsdag 28 juli 2009 07:21 schreef Roönaän het volgende:

Voor de tijd:
[ code verwijderd ]
Die is nog netter inderdaad
pi_71398976
Ook ik heb weer een vraagje; ik zal eerst de opzet van mijn database even laten zien.

1
2
3
4
5
6
7
user_id - top_id - nummer - getal
0         -      55    -     15    - 1
0         -      55    -     25    - 2
0         -      55    -     35    - 3
0         -      55    -     45    - 4
0         -      55    -     55    - 5
1         -      55    -     35    - 7


Nu ben ik bezig om een query te maken die het volgende kan uitlezen.

Alles van gebruiker 1 en 0 alleen als gegevens van gebruiker 1 bestaat moet dat van gebruiker 0 niet zichtbaar zijn. (verduidelijking in voorbeeld).

Uitkomst van de query moet dus zijn
1
2
3
4
5
6
0         -      55    -     15    - 1
0         -      55    -     25    - 2

0         -      55    -     45    - 4
0         -      55    -     55    - 5
1         -      55    -     35    - 7


Daar waar je een witte enter ziet zie je het verschil.

Ik gebruik nu deze query
1
2
3
4
5
6
7
8
SELECT *
FROM testtabel
WHERE confectie_id = '" . substr($_POST['test'], 1, strlen($_POST['maat']) -1) . "'
AND  (user_id      = '" . $_POST['user'] . "'
OR    user_id      = '0')
AND nummer IN ('" . implode("','", array_keys($noemers)) . "')
GROUP BY user_id, nummer
ORDER BY user_id


Anyone?
Just say hi!
  dinsdag 28 juli 2009 @ 16:10:14 #33
75592 GlowMouse
l'état, c'est moi
pi_71399349
n/m
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_71400286
Ik snap niet wat je bedoelt Chandler
pi_71407077
Kan je niet gewoon sorteren en dan een limit 1 toevoegen?
pi_71417819
Omg, wat ben ik toch slecht in uitleggen

@Roonaan; helaas dat werkt niet, wel als ik zou limieten op het aantal stuks. Wat ik wel kan doen is gewoon alles uitlezen van gebruiker 0 en eventueel de geselecteerde gebruiker en dan alles wat er wel bestaat voor de geselecteerde gebruiker gebruiken ipv wat er staat voor gebruiker 0.

Ik zal deze ochtend even beter nadenken over hoe ik het beter kan uitleggen!
Just say hi!
pi_71435915
Wat is "gebruiker 0", zijn dat je default setting oid?
  woensdag 29 juli 2009 @ 19:07:54 #38
110933 F4T4L_3RR0R
R.I.P. webicon ;(
pi_71436586
quote:
Op dinsdag 28 juli 2009 07:21 schreef Roönaän het volgende:
Bizar die newline code.
[ code verwijderd ]

Kan toch gewoon als
[ code verwijderd ]

Raar ook dat een striphtml geen tags weghaald of iets anders html gerelateerds doet.

Voor de tijd:
[ code verwijderd ]
Die voor de tijd werkt voortreffelijk! Wat gebeurd er trouwens als er 2 keer een tijdvermelding in staat? Net getest, dan geeft hij de eerst gevonden tijd door. Maar dit kan geen fouten veroorzaken?

Is er ook iets waardoor hij 123:45 of 12:345 niet als tijd mag herkennen? Een : achter de tijd moet juist wel weer kunnen: 12:34:56, waarbij hij 12:34 moet weergeven.

Die newline code is onderdeel van een soort HTML parser. Het script krijgt een e-mail te verwerken, en moet daar de plain text gedeelte uithalen.

Wat overblijft is:
quote:
charset="iso-8859-1"
Content-Transfer-Encoding: 8bit

Inhoud mailtje

----NextPart_048F8BC8A2197DE2036A
Daar moet hij de eerste twee regels en de laatste regel verwijderen.

Dat doe ik nu dus met het volgende:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
    
if (stripos($headers"boundary=") !== false) {

        
$splitplain explode("Content-Type: text/plain;"$message);
        
$splithtml explode("Content-Type: text/html;"$splitplain[1]);
        
$trimmed trim($splithtml[0]);

        function 
striphtml($trimmed)
        {
        
$arrhtml explode("\n"$trimmed);
        
$resulthtml = array();

        for (
$ihtml 2$sizehtml count($arrhtml); $ihtml < ($sizehtml 1); $ihtml++) {
            
$resulthtml[] = $arrhtml[$ihtml];
            }

        return 
$resulthtml;
        }

        
$clean implode("\n"striphtml($trimmed));

    } else {

        
$clean $message;
    }

        
$body trim(str_replace(array("=\n""=20""=3D"), array("""""="), $clean));
?>


Als er "boundary=" in de headers staat, is het mailtje in HTML opgemaakt en moet deze schoongemaakt worden.

Eerst split hij 'm op "Content-Type: text/plain;". Alles wat daaronder zit moet ik hebben.
Vervolgens split hij 'm op "Content-Type: text/html;". Alles wat doorboven zit moet ik hebben.
Vervolgens trim ik het resultaat.

Daarna ga ik met het for-loopje de inhoud splitten op newlines. De array geeft de inhoud, met uitzondering van de eerste 2 regels en de laatste regel terug.

Dan implode ik de array met de inhoud die ik over wil houden.

Als er geen "boundary=" in de headers staan, dan is het mailtje in plain text opgesteld en hoeft er niets te worden schoongemaakt.

[ Bericht 2% gewijzigd door F4T4L_3RR0R op 29-07-2009 22:02:16 ]
Een ballonvaarder die door de mand valt is nooit grappig...
  woensdag 29 juli 2009 @ 22:23:28 #39
110933 F4T4L_3RR0R
R.I.P. webicon ;(
pi_71442759
Toevoeging:

Dat array_slice werkt ook voortreffelijk.

Moest wel een kleine aanpassing doen:
quote:
function striphtml($trimmed) {
return array_slice(explode("\n", $trimmed), 2, -1);
}

$clean = implode("\n", striphtml($trimmed));
(-1 toegevoegd)
Een ballonvaarder die door de mand valt is nooit grappig...
  woensdag 29 juli 2009 @ 22:52:08 #40
110933 F4T4L_3RR0R
R.I.P. webicon ;(
pi_71443869
Heb de "html parser" nu zo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
    
if (stripos($headers"boundary=") !== false) {

        
$splitplain explode("Content-Type: text/plain;"$message);
        
$splithtml explode("Content-Type: text/html;"$splitplain[1]);
        
$trimmed trim($splithtml[0]);
        
$slicedmail array_slice(explode("\n"$trimmed), 2, -1);
        
$clean implode("\n"$slicedmail);

    } else {

        
$clean $message;
    }

        
$body trim(str_replace(array("=\n""=20""=3D"), array("""""="), $clean));
?>


Een ballonvaarder die door de mand valt is nooit grappig...
pi_71444957
Is het niet handiger om met een van de mime classes te werken uit de PEAR repository, of zit daar geen multipart mime parser tussen?
  woensdag 29 juli 2009 @ 23:43:15 #42
110933 F4T4L_3RR0R
R.I.P. webicon ;(
pi_71445581
Geen idee, vind het zo prima werken.

Zojuist weer een regel code minder, door $trimmed weg te laten en de trim elders toe te passen:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
    
if (stripos($headers"boundary=") !== false) {

        
$splitplain explode("Content-Type: text/plain;"$message);
        
$splithtml explode("Content-Type: text/html;"$splitplain[1]);
        
$slicedmail array_slice(explode("\n"trim($splithtml[0])), 2, -1);
        
$clean implode("\n"$slicedmail);

    } else {

        
$clean $message;
    }

        
$body trim(str_replace(array("=\n""=20""=3D"), array("""""="), $clean));
?>
Een ballonvaarder die door de mand valt is nooit grappig...
pi_71448868
quote:
Op woensdag 29 juli 2009 18:42 schreef Roönaän het volgende:
Wat is "gebruiker 0", zijn dat je default setting oid?
Je moet het zien als dat er allemaal vaste gegevens zijn per top_id/nummer, als een gebruiker een van deze gegevens aanpast wil ik alle 'vaste' gegevens die niet veranderd zijn maar ook de gegevens die wel veranderd zijn. En na dit alles wil ik de veranderde gegevens met het zelfde nummer (top_id/nummer) overschrijven over de top_id/nummer van gebruiker 0, zodat deze wegvalt.

vb:
1
2
3
4
5
6
0 - 10 - 1 - 100
1 - 10 - 1 - 101
0 - 10 - 2 - 100
0 - 10 - 3 - 100
0 - 10 - 4 - 100
1 - 10 - 4 - 99


nu moet ik dus een query maken die het volgende uitleest. (ALLES VAN gebruiker 0 OF 1 maar 1 overschrijft data van gebruiker 0)

1
2
3
4
1 - 10 - 1 - 101
0 - 10 - 2 - 100
0 - 10 - 3 - 100
1 - 10 - 4 - 99


hopelijk is het iets duidelijker! :D
Just say hi!
pi_71472726
Ik moet voor mijn website een text (ingevuld in een form) vergelijken met woorden in een database. De database heeft best een aardige lijst met woorden en een text kan eventueel best aardig van formaat worden. Het opbreken van de tekst in losse woorden en deze 1 voor 1 afzetten tegen de database is even de enige methode die ik kan bedenken om dit te doen. Het lijkt me echter niet echt een efficiente methode. Iemand een idee hoe dit sneller/efficienter kan?
ウプピエ 八十三 &lt;&lt; u-pu-pi-e hachi-ju-san, ik denk ik zeg het er maar ff bij :P
  donderdag 30 juli 2009 @ 22:09:07 #45
75592 GlowMouse
l'état, c'est moi
pi_71472948
SELECT count(*) FROM tbl WHERE woord IN( 'woord in tekst', 'ander woord in tekst', ..)

Index op woord en kijken of de snelheid acceptabel is.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  vrijdag 31 juli 2009 @ 01:01:50 #46
110933 F4T4L_3RR0R
R.I.P. webicon ;(
pi_71478292
Is het mogelijk om de volgende code aan meer eisen te laten voldoen?

1
2
3
<?php
preg_match
('/([01]?[0-9]|2[0-4]):[0-5][0-9]/'$string$m)
?>


Wat ik graag wil, is dat er een spatie voor de tijd moet staan, en een spatie of : achter de tijd moet staan. De spaties of : mogen echter niet in $m gezet worden.
Een ballonvaarder die door de mand valt is nooit grappig...
  vrijdag 31 juli 2009 @ 01:06:31 #47
75592 GlowMouse
l'état, c'est moi
pi_71478372
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  vrijdag 31 juli 2009 @ 01:24:15 #48
110933 F4T4L_3RR0R
R.I.P. webicon ;(
pi_71478604
quote:
Op vrijdag 31 juli 2009 01:06 schreef GlowMouse het volgende:
Ja hoor, dat is mogelijk. Zie http://nl3.php.net/manual/en/reference.pcre.pattern.syntax.php
Dat is helemaal nieuw voor mij, wel even slikken.

De verplichte spatie heb ik nu zo gedaan:

1
2
3
<?php
preg_match
('/\s([01]?[0-9]|2[0-4]):[0-5][0-9]\s/'$body$m);
?>


Edit: maar dan neemt hij de spaties wel mee in $m.

Nu nog even uitzoeken hoe ik de : toe kan voegen als verplichting (als er geen spatie staat) aan het einde van de tijd.
Een ballonvaarder die door de mand valt is nooit grappig...
  vrijdag 31 juli 2009 @ 01:37:13 #49
75592 GlowMouse
l'état, c'est moi
pi_71478761
Gebruik haakjes en kijk wat het effect is op print_r($m).
En het is óf een spatie óf een :, en voor de of is er ook een regex meta-character.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_71480154
quote:
Op vrijdag 31 juli 2009 01:24 schreef F4T4L_3RR0R het volgende:

[..]

Dat is helemaal nieuw voor mij, wel even slikken.

De verplichte spatie heb ik nu zo gedaan:
[ code verwijderd ]

Edit: maar dan neemt hij de spaties wel mee in $m.

Nu nog even uitzoeken hoe ik de : toe kan voegen als verplichting (als er geen spatie staat) aan het einde van de tijd.
Moet je even $m[1] gebruiken ipv $m[0].
abonnement Unibet Coolblue
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')