abonnement Unibet Coolblue Bitvavo
  woensdag 17 september 2008 @ 18:48:59 #61
75592 GlowMouse
l'état, c'est moi
pi_61708921
quote:
Op woensdag 17 september 2008 18:04 schreef slakkie het volgende:
je behoudt indentation, maar je breekt andere dingen:
[ code verwijderd ]


[ code verwijderd ]


Kleine moeite om te zorgen dat regels die op een tag eindigen niet meegenomen mogen worden
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_61727849
Ik heb weer een klein vraagje, stel ik wil een woord vervangen in een tekst.

Bv
1
2
3
Hello _world_ 

How is your world today?


nu wil ik alleen hello en world vervangen waar er geen _ voor of achter staat, hoe krijg ik dit voor elkaar, ik heb al gekeken naar eregi replace, maar aangezien die straks in php 6 schijnt te verdwijnen heb ik preg_replace bekeken maar kon daar niet echt wijs uit worden (regexjes)..

Ik heb het volgende geprobeerd /([^_]Hello[^_])+/ maar dit werkt niet :{ anyone? :D
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_61727997
kan je niet gewoon [spatie]world[spatie] replacen?
pi_61728363
Helaas niet omdat, want stel ik doe dit met HTML codes dan zou het voorbeeld er zo uit kunnen zien

1
2
3
4
<tr>
    <td>Hello _world_</td>
    <td>Hello world</td>
</tr>


snap je? :D
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_61728585
En als je [spatie]world én world[spatie] vervangt?

...ik zit nog niet zo in de reguliere expressies, misschien dat het daarmee makkelijker kan...
maar wat een optie is, is éérst "_world_" vervangen door iets anders (bijv "blaat", vervolgens "world" vervangen, en dan "blaat" weer vervangen door "_world_".
Afhankelijk van de toepassing zou je "_world_" ook kunnen vervangen door een variabele met waarde "_world_", dan kun je die laatste stap overslaan.
(www.mcDmetzijnhoutjetouwtjecode.nl)

[ Bericht 31% gewijzigd door mcDavid op 18-09-2008 12:46:25 ]
  donderdag 18 september 2008 @ 12:39:03 #66
75592 GlowMouse
l'état, c'est moi
pi_61728698
De gegeven regex werkt toch aardig. Met een kleine aanpassing:
1
2
3
4
5
6
7
8
9
10
<?php
$str 
'<tr>
    <td>Hello _world_</td>
    <td>Hello world</td>world
world
</tr>'
;

$str preg_replace('/([^_])world([^_])/''$1hoi!$2'$str);
echo 
$str
?>

1
2
3
4
5
<tr>
    <td>Hello _world_</td>
    <td>Hello hoi!</td>hoi!
hoi!
</tr>
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_61728996
Ik ben dus al aardig op de goede weg en hoe is het mogelijk om alle karakters te blokken behalve tekstuele tekens?? Een duw in de goede richting is altijd goed

[ Bericht 24% gewijzigd door Chandler op 18-09-2008 13:02:15 ]
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_61729262
quote:
Op donderdag 18 september 2008 @ 12:51 schreef Chandler het volgende:
Ik ben dus al aardig op de goede weg en hoe is het mogelijk om alle karakters te blokken behalve tekstuele tekens??
http://nl.php.net/manual/en/intro.filter.php
FILTER_SANITIZE_SPECIAL_CHARS

of bedoel je echt alleen a t/m z en A t/m Z?
pi_61729404
Ik doelde op alle karakters behalve de tekstuele en nummerieke.

Hmm, nu kom ik achter een slash in de tekst niet mogelijk is ik dacht dit te verhelpen door er een \ voor te zetten maar dat werkt niet? anyone?

1/2Procent
1'/([^_])1\/2Procent'([^_])/'


Bij welke karakters moet escapen? of hoe?

[ Bericht 82% gewijzigd door Chandler op 18-09-2008 13:37:41 ]
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_61730351
1
2
3
4
5
6
7
8
9
10
11
Sequence     Meaning
\n    linefeed (LF or 0x0A [img]http://forum.fok.nl/templates/foksilver/i/p/10.gif[/img] in ASCII)
\r    carriage return (CR or 0x0D [img]http://forum.fok.nl/templates/foksilver/i/p/13.gif[/img] in ASCII)
\t    horizontal tab (HT or 0x09 (9) in ASCII)
\v    vertical tab (VT or 0x0B [img]http://forum.fok.nl/templates/foksilver/i/p/11.gif[/img] in ASCII) (since PHP 5.2.5)
\f    form feed (FF or 0x0C [img]http://forum.fok.nl/templates/foksilver/i/p/12.gif[/img] in ASCII) (since PHP 5.2.5)
\\    backslash
\$    dollar sign
\"    double-quote
\[0-7]{1,3}    the sequence of characters matching the regular expression is a character in octal notation
\x[0-9A-Fa-f]{1,2}    the sequence of characters matching the regular expression is a character in hexadecimal notation 

bron
pi_61733688
Is er ook een functie om deze automatisch te escapen?
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_61735206
Addslashes had ik geprobeerd kreeg nog steeds een error

Maar goed, tis nu avond dus ga druk bezig met andere dingen, bedankt iig (allemaal)
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_61736581
quote:
Op donderdag 18 september 2008 13:10 schreef Chandler het volgende:
Ik doelde op alle karakters behalve de tekstuele en nummerieke.

Hmm, nu kom ik achter een slash in de tekst niet mogelijk is :D ik dacht dit te verhelpen door er een \ voor te zetten maar dat werkt niet? anyone?

1/2Procent
[ code verwijderd ]

Bij welke karakters moet escapen? of hoe?
Of bijvoorbeeld
1'#([^_])1/2Procent([^_])#'
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_61742639
huh? heb je ook een beschrijving van de #?
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_61743523
quote:
Op donderdag 18 september 2008 21:56 schreef Chandler het volgende:
huh? heb je ook een beschrijving van de #?
In principe "moet" je een regexp binnen /'es plaatsen: /regexp/, maar je mag het ook binnen # plaatsen, mits je dezelfde characters gebruikt. Als je bijv. een regexp met #regexp# klopt hoef je de / niet te escapen, dus ipv: /\/var\/log\/bla/ kan je dan #/var/log/bla# gebruiken. Zie http://perldoc.perl.org/perlretut.html (onder part 1 basic). Ik heb het zo 123 niet kunnen vinden in de PHP documentatie.
pi_61744074
quote:
Op donderdag 18 september 2008 22:19 schreef slakkie het volgende:

[..]

In principe "moet" je een regexp binnen /'es plaatsen: /regexp/, maar je mag het ook binnen # plaatsen, mits je dezelfde characters gebruikt. Als je bijv. een regexp met #regexp# klopt hoef je de / niet te escapen, dus ipv: /\/var\/log\/bla/ kan je dan #/var/log/bla# gebruiken. Zie http://perldoc.perl.org/perlretut.html (onder part 1 basic). Ik heb het zo 123 niet kunnen vinden in de PHP documentatie.
In PHP mag je in principe alles gebruiken, behalve de backslash (\) en alfanumerieke tekens. Zie ook http://nl.php.net/manual/en/intro.pcre.php
pi_61744552
quote:
Op donderdag 18 september 2008 22:19 schreef slakkie het volgende:
Ik heb het zo 123 niet kunnen vinden in de PHP documentatie.
Dat staat gewoon in de introductie :P
quote:
The expression must be enclosed in the delimiters, a forward slash (/), for example. Any character can be used for delimiter as long as it's not alphanumeric or backslash (\)

Een string escapen voor in een regexp doe je trouwens met preg_quote()
1$re = '#([^_])' . preg_quote($s) . '([^_])#'


Als je wil dat een woord niet vooraf wordt gegaan of wordt gevolgd door een underscore, dan kan je assertions gebruiken. In dit geval een negative lookbehind assertion (?<!...) en een negative lookahead assertion (?!...):

1/(?<!_)woord(?!_)/
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_61745645
quote:
Op donderdag 18 september 2008 22:45 schreef SuperRembo het volgende:
Dat staat gewoon in de introductie
Daar heb ik niet gekeken, zat hier te gluren: http://nl2.php.net/manual/en/reference.pcre.pattern.syntax.php

De perl tutorial is zoiezo een aanrader voor regular expressions
pi_61749072
-knip-

[ Bericht 50% gewijzigd door Cracka-ass op 19-09-2008 09:29:00 (verkeerde topic) ]
pi_61749118
quote:
Op vrijdag 19 september 2008 @ 03:22 schreef Cracka-ass het volgende:
Kan iemand mij vertellen waarom mijn button 'active' blijft? Hij blijft altijd ingedrukt zodra ie eenmaal is aangeklikt:
[ code verwijderd ]
niet dat het in de verste verte maar iets met PHP of MySQL te maken heeft, maar als je alle declaraties voor een psuedo-class ook aan de gewone class meegeeft, zal er weinig veranderen inderdaad.
pi_61749375
Oftewel, stel je css vragen hier: [CSS] voor dummies - deel 9
pi_61751038
quote:
Op vrijdag 19 september 2008 06:42 schreef slakkie het volgende:
Oftewel, stel je css vragen hier: [CSS] voor dummies - deel 9
Ok, thanks.
pi_61753359
Mensen, ik heb een vraag over preg_replace, het is nogal een slome functie is er ook een manier om het sneller te maken? want ik moet namelijk ruim 600 queries doen met preg_replace en dit duurt echt eeuwen!

Ik heb 50% besparing weten te behalen

oude structuur
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
for ($x 0$x $items$x++)
{
    
$list mysql_fetch_object($query);

    
$searchFor[] = '#([^_])' $list->zoek '([^_])#';
    
$searchFor[] = '#([^_])' ucFirst(strtolower($list->zoek)) . '([^_])#';
    
$searchFor[] = '#([^_])' strtolower($list->zoek) . '([^_])#';

    
$replace[] = '$1' $list->vervang '$2';
    
$replace[] = '$1' $list->vervang '$2';
    
$replace[] = '$1' $list->vervang '$2';

    
$text preg_replace($searchFor$replace$text);
}
?>


nieuwe structuur:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
for ($x 0$x $items$x++)
{
    
$list mysql_fetch_object($query);

    
$searchFor[] = '#([^_])' $list->zoek '([^_])#';
    
$searchFor[] = '#([^_])' ucFirst(strtolower($list->zoek)) . '([^_])#';
    
$searchFor[] = '#([^_])' strtolower($list->zoek) . '([^_])#';

    
$replace[] = '$1' $list->vervang '$2';
    
$replace[] = '$1' $list->vervang '$2';
    
$replace[] = '$1' $list->vervang '$2';
}
$text preg_replace($searchFor$replace$text);
?>


Maar volgens mij kan het nóg sneller!!!

[ Bericht 92% gewijzigd door Chandler op 19-09-2008 11:22:01 ]
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  vrijdag 19 september 2008 @ 12:19:05 #85
85514 ralfie
!Yvan eht nioj
pi_61755656
quote:
Op vrijdag 19 september 2008 11:03 schreef Chandler het volgende:
Mensen, ik heb een vraag over preg_replace, het is nogal een slome functie is er ook een manier om het sneller te maken? want ik moet namelijk ruim 600 queries doen met preg_replace en dit duurt echt eeuwen!

Ik heb 50% besparing weten te behalen

oude structuur
[ code verwijderd ]

nieuwe structuur:
[ code verwijderd ]

Maar volgens mij kan het nóg sneller!!!
Je kunt kijken of case insensitve searches sneller zijn als drie losse. Verder kun je proberen je [^_]'s te vervangen door assertions ik kan me voorstellen dat met name die eerste sneller werkt als assertion
quote:
Assertions
An assertion is a test on the characters following or preceding the current matching point that does not actually consume any characters. The simple assertions coded as \b, \B, \A, \Z, \z, ^ and $ are described above. More complicated assertions are coded as subpatterns. There are two kinds: those that look ahead of the current position in the subject string, and those that look behind it.

An assertion subpattern is matched in the normal way, except that it does not cause the current matching position to be changed. Lookahead assertions start with (?= for positive assertions and (?! for negative assertions. For example, \w+(?=;) matches a word followed by a semicolon, but does not include the semicolon in the match, and foo(?!bar) matches any occurrence of "foo" that is not followed by "bar". Note that the apparently similar pattern (?!foo)bar does not find an occurrence of "bar" that is preceded by something other than "foo"; it finds any occurrence of "bar" whatsoever, because the assertion (?!foo) is always TRUE when the next three characters are "bar". A lookbehind assertion is needed to achieve this effect.

Lookbehind assertions start with (?<= for positive assertions and (?<! for negative assertions. For example, (?<!foo)bar does find an occurrence of "bar" that is not preceded by "foo". The contents of a lookbehind assertion are restricted such that all the strings it matches must have a fixed length. However, if there are several alternatives, they do not all have to have the same fixed length. Thus (?<=bullock|donkey) is permitted, but (?<!dogs?|cats?) causes an error at compile time. Branches that match different length strings are permitted only at the top level of a lookbehind assertion. This is an extension compared with Perl 5.005, which requires all branches to match the same length of string. An assertion such as (?<=ab(c|de)) is not permitted, because its single top-level branch can match two different lengths, but it is acceptable if rewritten to use two top-level branches: (?<=abc|abde) The implementation of lookbehind assertions is, for each alternative, to temporarily move the current position back by the fixed width and then try to match. If there are insufficient characters before the current position, the match is deemed to fail. Lookbehinds in conjunction with once-only subpatterns can be particularly useful for matching at the ends of strings; an example is given at the end of the section on once-only subpatterns.

Several assertions (of any sort) may occur in succession. For example, (?<=\d{3})(?<!999)foo matches "foo" preceded by three digits that are not "999". Notice that each of the assertions is applied independently at the same point in the subject string. First there is a check that the previous three characters are all digits, then there is a check that the same three characters are not "999". This pattern does not match "foo" preceded by six characters, the first of which are digits and the last three of which are not "999". For example, it doesn't match "123abcfoo". A pattern to do that is (?<=\d{3}...)(?<!999)foo
pi_61756877
quote:
Op vrijdag 19 september 2008 11:03 schreef Chandler het volgende:
Maar volgens mij kan het nóg sneller!!!
Het is natuurlijk ook geen handig syteem als elk woord mogelijk vervangen kan worden, behalve als er een underscore voor en achter staat. Kan je dat niet omdraaien? Dat zou vele malen sneller zijn.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_61757182
Hey Ralfie, i werkte idd wel, scheelt maar een klein beetje tijd maar deed het verder goed! super!
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_61846922
Hoe kan ik simpel alle values in een array afronden? zonder foreach oid te gebruiken? ik heb al gekeken bij array_walk / array_map maar kan daar weinig uit wijs worden. Kan iemand mij vertellen welke functie te gebruiken is met verwijzing naar een voorbeeld oid?
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  dinsdag 23 september 2008 @ 12:37:59 #89
136730 PiRANiA
All thinking men are atheists.
pi_61847939
quote:
Op dinsdag 23 september 2008 11:52 schreef Chandler het volgende:
Hoe kan ik simpel alle values in een array afronden? zonder foreach oid te gebruiken? ik heb al gekeken bij array_walk / array_map maar kan daar weinig uit wijs worden. Kan iemand mij vertellen welke functie te gebruiken is met verwijzing naar een voorbeeld oid?
array_map("round",$Array);
toch gewoon? dacht ik hoor
pi_61848435
ik heb het met een functie in array_map opgelost, ivm afronden met meer achter de comma tnx!

Nog en andere vraag; is er ook een versie van implode waarbij de keys van een array gebruikt worden ipv de values?

-edit-
array_keys

[ Bericht 5% gewijzigd door Chandler op 23-09-2008 13:10:05 ]
The people who lost my respect will never get a capital letter for their name again.
Like trump...
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')