Connecting Tech Pros Worldwide Help | Site Map

regexps: dollar sign, lookaheads/behinds and speedquestions

 
LinkBack Thread Tools Search this Thread
  #1  
Old February 25th, 2007, 06:35 PM
Yorian
Guest
 
Posts: n/a
Default regexps: dollar sign, lookaheads/behinds and speedquestions

I just started to try regexps in php and I didn't have too many
problems, however I found a few when trying to build a templte engine.

The first one is found is the dollar sign. In my template I would like
to write this:

{$var} where var ofcourse will be replaced by the real var however I'm
having trouble with the dollar sign I do escape the it though, my
regexp:

preg_replace("/\{\$(.+?)\}/", 'var', $string);

However this didn't work, even if I try to just replace the dollar
sign (by a b) it doesn't work properly:

preg_replace("/\$/", "b", $string);

Another question is about lookaheads/behinds, in my template I would
like to use this:

{include file="file.tpl"} for example, so I created this regexp:
preg_replace("/\{include file=(?:\"|\')*(.+?)(?:\"|\')*\}/i",
'replacement', $string);

Works fine but now people don't have to use the same opening and
ending character, how do I do that?

Last questions for now, I know regexps are not very fast and this does
give a bit of a problem.

So my questions:
- Are there things in regexps te be avoided since it takes ages?
- Are there ways to speed up regexps?


  #2  
Old February 25th, 2007, 10:05 PM
petersprc
Guest
 
Posts: n/a
Default Re: regexps: dollar sign, lookaheads/behinds and speedquestions

You can use single quotes to escape the dollar:

'/\{\$(.+?)\}/'

For the other case, you could do an or with a pipe:

'/\'.*?\'|".*?"/'

On Feb 25, 2:25 pm, "Yorian" <yorianbenja...@hotmail.comwrote:
Quote:
I just started to try regexps in php and I didn't have too many
problems, however I found a few when trying to build a templte engine.
>
The first one is found is the dollar sign. In my template I would like
to write this:
>
{$var} where var ofcourse will be replaced by the real var however I'm
having trouble with the dollar sign I do escape the it though, my
regexp:
>
preg_replace("/\{\$(.+?)\}/", 'var', $string);
>
However this didn't work, even if I try to just replace the dollar
sign (by a b) it doesn't work properly:
>
preg_replace("/\$/", "b", $string);
>
Another question is about lookaheads/behinds, in my template I would
like to use this:
>
{include file="file.tpl"} for example, so I created this regexp:
preg_replace("/\{include file=(?:\"|\')*(.+?)(?:\"|\')*\}/i",
'replacement', $string);
>
Works fine but now people don't have to use the same opening and
ending character, how do I do that?
>
Last questions for now, I know regexps are not very fast and this does
give a bit of a problem.
>
So my questions:
- Are there things in regexps te be avoided since it takes ages?
- Are there ways to speed up regexps?

  #3  
Old February 25th, 2007, 11:15 PM
Toby A Inkster
Guest
 
Posts: n/a
Default Re: regexps: dollar sign, lookaheads/behinds and speedquestions

Yorian wrote:
Quote:
However this didn't work, even if I try to just replace the dollar
sign (by a b) it doesn't work properly:
>
preg_replace("/\$/", "b", $string);
You need to either use single-quote marks, or double-escape it.

"/\\\$/"
'/\$/'

This is because the dollar sign has two special meanings in this case.
Dollar signs in double-quotes are used by PHP for interpolation, so need
escaping. Dollar signs in PCREs are used to mark the end of a string, so
need escaping. Hence the double-escape. (i.e. three slashes!)

--
Toby A Inkster BSc (Hons) ARCS
Contact Me ~ http://tobyinkster.co.uk/contact
Geek of ~ HTML/SQL/Perl/PHP/Python*/Apache/Linux

* = I'm getting there!
 

Bookmarks

Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On

Popular Articles

What is Bytes?

We are a network of experts and professionals in IT and software development that help one another with answers to tough questions and share insights. Get the best answers to your questions from over 220,989 network members.