"There are 10 kinds of people in the world, those who understand binary and those who don't" | Werkbak specs
Kijk eens naar str_replace. Veel makkelijker en nog sneller ook!
On track
Maar str_replace vervangt alles. En dat wil ik dus niet. Als je bijvoorbeeld in een zin ee:?n zou typen, wil ik niet dat het wordt vervangen... en dat gebeurd met str_replace wel.
"There are 10 kinds of people in the world, those who understand binary and those who don't" | Werkbak specs
Ik zie niet waarom je jezelf plaagt met die multiline onzin...
Ik stel dit voor:
/(?<=(\s|^)):\?(?=(\s|$))/
Kijk even in de PCRE syntax onder Assertions (hier)
Ik stel dit voor:
/(?<=(\s|^)):\?(?=(\s|$))/
Kijk even in de PCRE syntax onder Assertions (hier)
Localhost, sweet localhost
Hmm.. zit wat in
Je wilt dus voor een een smilie een whitespace of begin van een regel? en daarna ook?
Wordt het dan niet ongeveer
preg_replace( '/(^|\s):\?(\s|$)/', '\\1question\\2', $Str) ?
Wordt het dan niet ongeveer
preg_replace( '/(^|\s):\?(\s|$)/', '\\1question\\2', $Str) ?
[ Voor 0% gewijzigd door WouZz op 20-08-2002 23:51 . Reden: vervelende highlight bug :( ]
On track
Kun je niet str_replace pakken en dan '
' (of moet dat met [:space:] ?) gebruiken?
Geprobeerd, zelfde probleem...WouZz schreef op 20 augustus 2002 @ 23:49:
Hmm.. zit wat inJe wilt dus voor een een smilie een whitespace of begin van een regel? en daarna ook?
Wordt het dan niet ongeveer
preg_replace( '/(^|\s):\?(\s|$)/', '\\1question\\2', $Str) ?
maar dan moet ik dus in totaal drie keer str_replace doen, per smiley vorm... ik heb nu al een hele waslijst aan patterns die een smiley kunnen vormen, en als ik dat nog eens drie keer moet doen .. zie ik eigenlijk niet zo zittenSAiKO schreef op 20 augustus 2002 @ 23:51:
Kun je niet str_replace pakken en dan '' (of moet dat met [:space:] ?) gebruiken?
-Edit-
Ik had trouwens ook nog dit geprobeerd:
code:
1
| echo preg_replace( '/(\b):\?(\b)/', '\\1question\\2', $Str); |
Zonder enig resultaat overigens.
Ik snap niet 100% wat hier eigenlijk staat... maar da's toch nu niet het geval? Ik wil in principe niks met multilines te maken hebben, wil alleen maar weten of iets aan het begin van een regel staat, of dat er een spatie voor staat, zelfde verhaal eigenlijk aan de achterkant...kvdveer schreef op 20 augustus 2002 @ 23:43:
Ik zie niet waarom je jezelf plaagt met die multiline onzin...
Ik stel dit voor:
/(?<=(\s|^)):\?(?=(\s|$))/
Kijk even in de PCRE syntax onder Assertions (hier)
"There are 10 kinds of people in the world, those who understand binary and those who don't" | Werkbak specs
Deze gaat mis omdat \s|^ binnen haakjes staat. Een groep binnen Lookbehind mag alleen 'fixed length' zijn. ^ is korter dan \s.
Dit kan wel
(?<=\s|^)
En dit ook
(?<!\S)
Beiden hebben hetzelfde effect.
Lookbehind en lookahead matchen niets dus \1 en \2 bestaan niet.WouZz schreef op 20 augustus 2002 @ 23:49:Wordt het dan niet ongeveer
preg_replace( '/(^|\s):\?(\s|$)/', '\\1question\\2', $Str) ?
Dus zo werkt ie wel:
code:
1
| $Str = preg_replace('/(?<!\S):\?(?!\S)/', 'question', $Str); |
Edit : ik zie nu dat ik de post van WouZz helemaal niet goed gelezen heb... Je gebruikt helemaal geen lookahead en behind, sorry..
Jeetje, het werkt inderdaadsjokki schreef op 21 augustus 2002 @ 00:29:
Dus zo werkt ie wel:
code:
1$Str = preg_replace('/(?<!\S):\?(?!\S)/', 'question', $Str);
Maar wat staat hier nu precies? Ik begrijp het nog niet helemaal hoor..
je kijkt eerst of het vorige(?) character een whitespace is (of eigenlijk niet "alles behalve whitespace")dan de smiley, en dan kijken of het volgende character niet "alles behalve whitespace" is...? Maar newlines en begin van regels behoren toch niet tot whitespaces? Dus die zouden moeten matchen met \S .. of begrijp ik het nu helemaal verkeerd?
"There are 10 kinds of people in the world, those who understand binary and those who don't" | Werkbak specs
Je kunt het zien als een regular expression in een regular expression. Als die smiley aan het begin van een string staat wordt deze regular expression uitgevoerd:_Mo_ schreef op 21 augustus 2002 @ 00:40:
[...]
Jeetje, het werkt inderdaad* sjokki is weer helemaal blij
Maar wat staat hier nu precies? Ik begrijp het nog niet helemaal hoor..
je kijkt eerst of het vorige(?) character een whitespace is (of eigenlijk niet "alles behalve whitespace")dan de smiley, en dan kijken of het volgende character niet "alles behalve whitespace" is...? Maar newlines en begin van regels behoren toch niet tot whitespaces? Dus die zouden moeten matchen met \S .. of begrijp ik het nu helemaal verkeerd?
code:
Deze geeft 'false' terug en dat is goed.1
| preg_match('/\S/','') |
Een newline is wel degelijk whitespace.
\s = [\ \t\r\n\f]
jaaaja, 'tis eigenlijk nog best simpel als het zo bekijkt
In ieder geval, hartstikke bedankt voor je hulp en alle anderen ook voor hun inbreng
"There are 10 kinds of people in the world, those who understand binary and those who don't" | Werkbak specs
Pagina: 1