[php] formatting verwijderen uit string

Pagina: 1
Acties:
  • 104 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • maartenvdv737
  • Registratie: Augustus 2000
  • Laatst online: 06:31
In mijn php applicatie code plaats ik om overzichtsredenenen mijn queries op meerdere regels.

De query string die daardoor ontstaat bevat regeleindes, tabs en spaties. Dit werkt allemaal prima, echter, de queries worden door mysql gelogd in hun oorspronkelijke opmaak, waardoor mijn query logfiles vol staan met regel eindes. Ook werken de query analyze tools daardoor niet.

Ik probeer dus met php een string (onder windows en unix) te ontdoen van zijn formatting:

code:
1
2
3
4
SELECT
                *
FROM
                table


PHP:
1
$parsedQuery = ereg_replace("\n", " ", ereg_replace("\t", " ", $query));


Dit werkt echter niet gewenst.

Weet iemand wat er precies in die string staat, of hoe ik kan zien welke tekens er precies in staan, zodat ik die kan filteren?

Ik blijf er iig vrij nuchter onder....


Acties:
  • 0 Henk 'm!

  • maartenvdv737
  • Registratie: Augustus 2000
  • Laatst online: 06:31
Dit lijkt een redelijk snelle oplossing:

PHP:
1
2
$parsedQuery = str_replace(array("\n", "\r", "\t"), " ", $query);
$parsedQuery = eregi_replace(" +", " ", $parsedQuery);

Ik blijf er iig vrij nuchter onder....


Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Dat lijkt me heel erg praktisch als je een keer regeleindes in strings in je database wil invoegen. ;)

'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!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 15:29

crisp

Devver

Pixelated

De meest eenvoudige oplossing lijkt mij:
PHP:
1
$parsedQuery = preg_replace('/\s+/', ' ', $query);

wat -NMe- zegt zit wat in, maar de vraag is hoe belangrijk dat is voor enkel logging (ervan uitgaande dat je deze formatting uitvoert na het uitvoeren van de query zelf) ;)

[ Voor 18% gewijzigd door crisp op 26-06-2006 23:08 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

zou je niet met trim() kunnen werken?
PHP:
1
$parsedQuery = trim($query);

[ Voor 38% gewijzigd door Verwijderd op 26-06-2006 23:18 ]


Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Voer dit voor de grap eens uit dan. ;)
PHP:
1
2
3
4
5
6
7
8
<pre>
<?php
  echo trim('SELECT
                *
FROM
                table');
?>
</pre>

'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!

  • Morax
  • Registratie: Mei 2002
  • Laatst online: 20-09 00:30
Verwijderd schreef op maandag 26 juni 2006 @ 23:16:
zou je niet met trim() kunnen werken?
PHP:
1
$parsedQuery = trim($query);
Nee, want trim verwijdert alleen whitespaces aan het begin en aan het einde van de string, dus de string
code:
1
foo             bar
zal niet aangepast worden :)

[ Voor 4% gewijzigd door Morax op 26-06-2006 23:26 ]

What do you mean I have no life? I am a gamer, I got millions!


Acties:
  • 0 Henk 'm!

Verwijderd

Morax schreef op maandag 26 juni 2006 @ 23:25:
[...]


Nee, want trim verwijdert alleen whitespaces aan het begin en aan het einde van de string, dus de string
code:
1
foo             bar
zal niet aangepast worden :)
jullie hebben gelijk.. dacht dat je met trim ook in de string kon.. blijk baar niet..

ik heeft niks gezegd...... |:(

Acties:
  • 0 Henk 'm!

  • maartenvdv737
  • Registratie: Augustus 2000
  • Laatst online: 06:31
hmm ok, dat bleek inderdaad niet zo handig voor de new lines in de variabelen.

Echter, ik gebruik de query logging van mysql zelf (+ slow log), dus het wegschrijven van de query naar een log in mijn database class is niet praktisch.

Ik moet dus een manier hebben om alleen de query zelf van opmaak te ontdoen, maar niet de variabelen.


Of weet iemand een andere manier om handig de queries te loggen in mysql, zodat de slow queries gelogd kunnen worden?

Ik blijf er iig vrij nuchter onder....


Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Dat zou ik hem teken voor teken gaan doorlopen. Alles meerdere spaties en/of newlines etc. vervang je dan door 1ntje, en als bij je een openings quote komt, dan voeg je daarna alles toe zoals het is tot je weer dezelfde quote tegenkomt, die de string afsluit. Dat moet niet al te moeilijk zijn. Je moet wel rekening houden met escapen van quote tekens in de strings zelf.

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
Dan moet je matchen op je SQL commandos, zodat whitespace tussen SELECT en FROM wel gestript wordt, maar tussen bijv naam = ' en ', adres niet.
Dat is volgens mij best te doen met wat slimme pregs

[ Voor 34% gewijzigd door frickY op 27-06-2006 08:57 ]

Pagina: 1