RE: [PHP] highlight_string()
| From: | Weber Sites LTD | Date: | Fri, 10 Mar 2006 12:59:12 +0000 |
| Subject: | RE: [PHP] highlight_string() | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-231760@lists.php.net to get a copy of this message | ||
Hi
I found an example for this on WeberDev and got it to work pretty good.
However, when I started to check, I now have a different issue.
Till now, I just highlighted all of the text. Now I take the php code
Out, highlight only the php code and put it back in.
The problem is that I'm looking for anything between <? And ?>
And some of the code examples have <?..... <?xml..... ?>.....?>
So what I really take out is <?..... <?xml..... ?>
How can I avoid this?
thanks
-----Original Message-----
From: chris smith [mailto:dmagick@gmail.com]
Sent: Friday, March 10, 2006 1:19 PM
To: Weber Sites LTD
Cc: php-general@lists.php.net
Subject: Re: [PHP] highlight_string()
On 3/10/06, Weber Sites LTD <berber@weber-sites.com> wrote:
> Hi
>
> I'm trying to go with your idea but I'm having difficulties with
> preg_match_all.
> I want the text between <?php and ?>. The use of preg_match_all bellow
> only Returns text that is in a single line. If the <php is on one line
> and the ?> is A few lines bellow, it does not match.
>
> preg_match_all('/<\?php(.*?)\?>/i',$text,$CodeArray,PREG_PATTERN_ORDER
> );
Try /is
it will treat the string as one huge line.
> -----Original Message-----
> From: Chris [mailto:dmagick@gmail.com]
> Sent: Tuesday, March 07, 2006 3:08 AM
> To: Weber Sites LTD
> Cc: php-general@lists.php.net
> Subject: Re: [PHP] highlight_string()
>
> Weber Sites LTD wrote:
> > I was afraid of that...
> > I need to do HTML manipulations on the text that is outside the <??>.
> > After I run highlight_string the original text is messed up.
> > If I run the manipulations before then they will look like HTML And
> > not act as HTML...
> >
> > Any ideas?
>
> You could get the php from your page, highlight it and replace it back in:
>
> preg_replace('%<?(.*)?>%s', 'highlight_string(${1})', $content);
>
> don't know if that will work straight out for you but that should give
> you an idea on how to proceed.
>
>
> Or you could temporarily remove them, do whatever then replace it back in:
>
> $placeholders = array();
> while(preg_match('%<?(.*)?>%s', $content, $matches)) {
> $size = sizeof($placeholders);
> $placeholders[$size] = $matches[1];
> $content = str_replace($matches[0], '%%PLACEHOLDER['.$size.']%%',
> $content); }
>
> ... other processing here.
>
> foreach($placeholders as $i => $text) {
> $content = str_replace('%%PLACEHOLDER['.$i.']%%',
> highlight_string($text), $content);
> }
>
>
> > -----Original Message-----
> > From: chris smith [mailto:dmagick@gmail.com]
> > Sent: Monday, March 06, 2006 11:59 AM
> > To: Weber Sites LTD
> > Cc: php-general@lists.php.net
> > Subject: Re: [PHP] highlight_string()
> >
> > On 3/6/06, Weber Sites LTD <berber@weber-sites.com> wrote:
> >
> >>The only way I could work around this was to put empty <??> at the
> >>Beginning of the text and now highlight_string() highlights only
> >>what Is inside <? ?>
> >>
> >>You can see an example of the problematic text in the example Area
> >>of this page :
> >>http://www.weberdev.com/get_example-4345.html
> >>
> >>Notice the empty <? ?> at the beginning of the example.
> >>Without them, all of the example, including the text and HTML Part
> >>will be painted by highlight_string().
> >>
> >>Is this a bug?
> >
> >
> > No. It will highlight html as well.
> >
> > You can give the illusion of it not highlighting the html by using:
> >
> > ini_set('highlight.html', '#000000');
--
Postgresql & php tutorials
http://www.designmagick.com/