RE: [PHP] Regex question: replacing incidences of character when not enclosed within HTML tags? (somewhat solved)

2005-05-29 Thread Murray @ PlanetThoughtful
> So, thinking about it a little more, I decided what I was looking for was
> a
> regular expression that would allow me to replace any incidences of
> hyphens
> when not contained within tags (i.e., when not contained between "<" and
> ">").
> 
> And this is where things have ground to a halt.

Hi All,

After toying with this for several hours I decided to give up on trying to
work out a way to achieve this via a single regular expression replacement.

My simpler 'solution' now is to pull out all text not contained within tags
using preg_match_all(), and run a str_replace() across these values to
replace any incidences of hyphens, and then another str_replace() to replace
the content with the substring where hyphens were found.

So, something like:

)(.+?)(<|$)/m", $text,$hypharr);
for ($i=0; $i < count($hypharr[0]); $i++){

$rephyph = str_replace("-","-
", $hypharr[0][$i]);
if ($rephyph <> $hypharr[0][$i]){
$text= str_replace($hypharr[0][$i],$rephyph,$text);
}
}

?>

This seems to achieve what I'm looking for, ie replacing hyphens when not
contained in HTML tags.

Regards,

Murray

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] regex question

2005-05-17 Thread Al
Murry's solution here is ideal since it only captures the single occurrence. 
Since I want to use it for a preg_replace(), it is perfect.

A couple of folks sent this pattern [EMAIL PROTECTED]@[EMAIL PROTECTED]; but, it doesn't work because I 
then have to remove the unwanted caracters on either side.

All it says is [not  @[EMAIL PROTECTED]@] but, it captures the 2 characters on 
each side.
Murry's solution (?
Thanks everyone


Murray @ PlanetThoughtful wrote:
What pattern can I use to match ONLY single occurrences of a character in
a string.
e.g., "Some text @ and some mo@@re and [EMAIL PROTECTED], etc @@@.
I only want the two occurrences with a single occurrence of "@".
@{1} doesn't work; there are 4 matches.
Thanks

Please ignore my last email re: your question. I realized that the negation
of the range containing the "@" would end up capturing unwanted characters.
As an alternative, try the following:
preg_match_all('/(?
$thing, PREG_OFFSET_CAPTURE); 

print_r($thing);
Hope that's a little more relevant to your question.
Regards,
Murray
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


Re: [PHP] regex question

2005-05-17 Thread Petar Nedyalkov
On Monday 16 May 2005 22:53, Al wrote:
> What pattern can I use to match ONLY single occurrences of a character in a
> string.
>
> e.g., "Some text @ and some mo@@re and [EMAIL PROTECTED], etc @@@.

Use the following:

/(^@)(@{1})(^@)/

This way you'll be sure the regexp will match only single occurences ot hte 
'@' symbol.
Please take in mind that if you have this symbol in the beginning of the 
string or at the end - you have to modify this.

>
> I only want the two occurrences with a single occurrence of "@".
>
> @{1} doesn't work; there are 4 matches.
>
> Thanks

-- 

Cyberly yours,
Petar Nedyalkov
Devoted Orbitel Fan :-)

PGP ID: 7AE45436
PGP Public Key: http://bu.orbitel.bg/pgp/bu.asc
PGP Fingerprint: 7923 8D52 B145 02E8 6F63 8BDA 2D3F 7C0B 7AE4 5436


pgpWSAkSaWAeD.pgp
Description: PGP signature


Re: [PHP] regex question

2005-05-16 Thread Jason Barnett

$text = 'Some text @ and some mo@@re and [EMAIL PROTECTED], etc @@@.';
/** Word boundaries before and after @ */
$regex = '/[EMAIL PROTECTED]/';
preg_match_all($regex, $text, $matches);
var_dump($matches);
?>
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


RE: [PHP] regex question

2005-05-16 Thread Murray @ PlanetThoughtful
> Try (for example if character was "A") ...
> 
> ([^A]|^)A([^A]|$)
> 
> This matches four cases:
> A is at beginning of string and there is another letter after it,
> A has a letter before it and a letter after it,
> A is at end of string and there is a letter before it,
> or A is the only character in the string.

I think this has the same problem that my first attempt at this regex
experienced.

I.e., it will correctly 'find' single instances of 'A', but it will 'match'
against unwanted characters on either side of each 'found' 'A' because they
are not-A.

For example, the following:

preg_match_all('/([^A]|^)A([^A]|$)/','A sentence with instAnces of AAA
chArActers', $thing, PREG_OFFSET_CAPTURE);

print_r($thing);

produces:

Array
(
[0] => Array
(
[0] => Array
(
[0] => A
[1] => 0
)

[1] => Array
(
[0] => tAn
[1] => 19
)

[2] => Array
(
[0] => hAr
[1] => 34
)

)

[1] => Array
(
[0] => Array
(
[0] =>
[1] => 0
)

[1] => Array
(
[0] => t
[1] => 19
)

[2] => Array
(
[0] => h
[1] => 34
)

)

[2] => Array
(
[0] => Array
(
[0] =>
[1] => 1
)

[1] => Array
(
[0] => n
[1] => 21
)

[2] => Array
(
[0] => r
[1] => 36
)

)

)

Note the multiple instances of characters other than 'A' in the array. Also
note that the 4th qualifying 'A' (the second 'A' in 'chArActers') is missed,
because the 'r' is already part of the capture of the preceding 'A').

On the other hand, the following:


preg_match_all(' /(? Array
(
[0] => Array
(
[0] => A
[1] => 0
)

[1] => Array
(
[0] => A
[1] => 20
)

[2] => Array
(
[0] => A
[1] => 35
)

[3] => Array
(
[0] => A
[1] => 37
)

)

)

Here, only the target characters are matched, without the confusion of extra
unwanted characters. All 4 target 'A's are caught, because the patterns on
either side of the 'A' in the regex pattern are non-capturing. So, basically
this is employing a non-capturing negative look-behind and a non-capturing
negative look-ahead, rather than capturing negated character classes.

I've probably only managed to confuse things more than they were, but I'm
hoping some of what I've said above makes sense (to me, if no-one else).

Regards,

Murray

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



RE: [PHP] regex question

2005-05-16 Thread Murray @ PlanetThoughtful
> What pattern can I use to match ONLY single occurrences of a character in
> a string.
> 
> e.g., "Some text @ and some mo@@re and [EMAIL PROTECTED], etc @@@.
> 
> I only want the two occurrences with a single occurrence of "@".
> 
> @{1} doesn't work; there are 4 matches.
> 
> Thanks

Please ignore my last email re: your question. I realized that the negation
of the range containing the "@" would end up capturing unwanted characters.

As an alternative, try the following:

preg_match_all('/(?http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



RE: [PHP] regex question

2005-05-16 Thread Murray @ PlanetThoughtful
> What pattern can I use to match ONLY single occurrences of a character in
> a string.
> 
> e.g., "Some text @ and some mo@@re and [EMAIL PROTECTED], etc @@@.
> 
> I only want the two occurrences with a single occurrence of "@".
> 
> @{1} doesn't work; there are 4 matches.

"/[EMAIL PROTECTED]@[EMAIL PROTECTED]/" seems to do what you're looking for. In 
other words, match the
"@" symbol where it is not preceded or followed by another "@" symbol.

To test, try:

preg_match_all('/[EMAIL PROTECTED]@[EMAIL PROTECTED]/','Some @ text with the @t 
sym@@bol  @@@',
$thing, PREG_OFFSET_CAPTURE); 

print_r($thing);

There may be a more intuitive way to do this, but at least it seems to work.

Regards,

Murray

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] regex question

2005-05-16 Thread Philip Hallstrom
On Mon, 16 May 2005, Al wrote:
What pattern can I use to match ONLY single occurrences of a character in a 
string.

e.g., "Some text @ and some mo@@re and [EMAIL PROTECTED], etc @@@.
I only want the two occurrences with a single occurrence of "@".
[EMAIL PROTECTED]@[EMAIL PROTECTED]
should do it I think.
@{1} doesn't work; there are 4 matches.
Thanks
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


Re: [PHP] regex question

2005-05-16 Thread Brandon Ryan
Try (for example if character was "A") ...

([^A]|^)A([^A]|$)

This matches four cases:
A is at beginning of string and there is another letter after it,
A has a letter before it and a letter after it,
A is at end of string and there is a letter before it,
or A is the only character in the string.

On 5/16/05, Al <[EMAIL PROTECTED]> wrote:
> What pattern can I use to match ONLY single occurrences of a character in a 
> string.
> 
> e.g., "Some text @ and some mo@@re and [EMAIL PROTECTED], etc @@@.
> 
> I only want the two occurrences with a single occurrence of "@".
> 
> @{1} doesn't work; there are 4 matches.
> 
> Thanks
> 
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
> 
>

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] REGEX Question

2003-06-18 Thread SLanger
Hello

Two things:
First wouldn't it be faster to use strpos and substr if you simply have to 
find the literate  and .
Second: If you use your regex and you have something like
" This is some text to grasp this is 
text I don't want  This is some other text I want"
The result would be " This is some text to grasp this is 
text I don't want  This is some other text I want". 
You should use the " *+" quantifier in order to only grab the content " 
This is some text to grasp". 

Regards
Stefan Langer

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] REGEX Question

2003-06-18 Thread Don Read

On 17-Jun-2003 Ron Dyck wrote:
> I need to match text between two html comment tags.
> 
> I'm using: preg_match("/(.*)/", $data,
> $Match)
> 
> Which work fine until I have carriage returns. The following doesn't
> match:
> 

Use the m (multiline) modifier:

preg_match("/(.*)/m", ...

Regards,
-- 
Don Read   [EMAIL PROTECTED]
-- It's always darkest before the dawn. So if you are going to 
   steal the neighbor's newspaper, that's the time to do it.
   

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] REGEX Question

2003-06-17 Thread Marek Kilimajer
. matches any character except newline by default, use s modifier:
preg_match("/(.*)/s", $data, $Match)
Ron Dyck wrote:
I need to match text between two html comment tags.

I'm using: preg_match("/(.*)/", $data, $Match)

Which work fine until I have carriage returns. The following doesn't match:

 Nullam auctor pellentesque sem. Aenean semper. Aenean magna
justo, rutrum et, consequat a, vehicula non, arcu.
Mauris cursus vulputate pede. Cum sociis natoque penatibus et magnis dis
parturient montes, nascetur ridiculus mus. Lorem ipsum dolor sit amet,
consectetuer adipiscing elit.
Appreciate you help.

==
Ron Dyck
Webbtech.net
==



--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


Re: [PHP] Regex question

2002-12-13 Thread Sean Burlington
Troy May wrote:

How would take a regular non-formatted text link (http://www.link.com) and
turn it into ready to post HTML? (http://www.link.com>http://www.link.com)

Darn, Outlook formats it, but you get the idea.  It would just be typed out
normally.

Any ideas?




function MakeUrl ($text) {
$text =  preg_replace("/(www\.[a-zA-Z0-9\.\/#~:?+=&%@!_\\-]+)/", 
"http://\\1";  ,$text);#make www. -> http://www.
$text = 
preg_replace("/(http:\/\/)(?!www)([a-zA-Z0-9\.\/#~:?+=&%@!_\\-]+)/", 
"\\1\\2"  ,$text); #eg-- http://kernel.org
$text = 
preg_replace("/(http:\/\/)(www\.)([a-zA-Z0-9\.\/#~:?+=&%@!\\-_]+)/", 
"\\1\\2\\3" ,$text); #eg -- http://www.google.com -> http://www.google.com";>www.google.com
return $text;
}


--

Sean


--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] Regex question...

2002-10-28 Thread Leif K-Brooks
I need to do a few other things that require regex though, like making 
either an a or an @ match (people love to get around filters by using 
symbols instead of letters...).

@ Edwin wrote:

Hello,

"Leif K-Brooks" <[EMAIL PROTECTED]> wrote:
[snip] 
 

But that doesn't work at all.  Any ideas on how to do this?
   

[/snip]

Would't it be easier (and faster) to use

  http://www.php.net/manual/en/function.str-replace.php ?

- E


 


--
The above message is encrypted with double rot13 encoding.  Any unauthorized attempt to decrypt it will be prosecuted to the full extent of the law.





Re: [PHP] Regex question...

2002-10-28 Thread @ Edwin
Hello,

"Leif K-Brooks" <[EMAIL PROTECTED]> wrote:
[snip] 
> But that doesn't work at all.  Any ideas on how to do this?
[/snip]

Would't it be easier (and faster) to use

   http://www.php.net/manual/en/function.str-replace.php ?

- E


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php




Re: [PHP] RegEx question

2002-07-02 Thread Gurhan Ozen

eregi("php$", $stringtobecompared);

See: http://www.php.net/manual/en/ref.regex.php

Gurhan

- Original Message - 
From: "David Busby" <[EMAIL PROTECTED]>
To: "php-general" <[EMAIL PROTECTED]>
Sent: Tuesday, July 02, 2002 4:49 PM
Subject: [PHP] RegEx question


> List,
> How can I regex to compare the last three chars of a string to "php"?
> 
> /B
> 
> 
> -- 
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
> 
> 


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php




RE: [PHP] RegEx question

2002-07-02 Thread Henning Sittler

$string = 'somethingphp';
$pat = 'php$';
$hasphp = ereg($pat, $string);



Henning Sittler
www.inscriber.com



-Original Message-
From: David Busby [mailto:[EMAIL PROTECTED]]
Sent: Tuesday, July 02, 2002 4:49 PM
To: php-general
Subject: [PHP] RegEx question


List,
How can I regex to compare the last three chars of a string to
"php"?

/B


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] RegEx question

2002-07-02 Thread Kevin Stone

Actually for a job like this look to substr() to extract the last three
chars as a string and compare them in an if() statment.
http://www.php.net/manual/en/function.substr.php
-Kevin

- Original Message -
From: "David Busby" <[EMAIL PROTECTED]>
To: "php-general" <[EMAIL PROTECTED]>
Sent: Tuesday, July 02, 2002 2:49 PM
Subject: [PHP] RegEx question


> List,
> How can I regex to compare the last three chars of a string to "php"?
>
> /B
>
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php




RE: [PHP] Regex question

2002-01-09 Thread Jon Haworth

> As far as I can see (notice: I'm not a regex-king ;) the regex seems
correct
> to me. The only thing I'm wondering about is the "/^<" (second last line
of
> the citation). Together with your expression in the array it results in
> preg_match("/<\/ I'm wondering if that ( not only 

Re: [PHP] Regex question

2002-01-09 Thread Stefan Rusterholz


> > If you want the [ to be escaped in the regex you have to "double-escape"
> it:
> > $x = "\ \["; (sorry, the two \ should be together without a space but my
> > stupid mail-app converts the string thinking it's an network address)
> > so $x will contain "\[" as you want ( the first backslash escapes the
> > second).
>
> Hi Stefan,
>
> Thanks very much for that, it does make sense :-)
>
> Unfortunately it still hasn't fixed the problem... I suppose my question
has
> now boiled down to "do I need to escape !, <, or - in a regex?" :-)
>
> Cheers
> Jon

here the expression again:
>>>$tags = array ("script",
>>>   "");
>>>foreach ($tags as $currentTag)
>>>  if (preg_match ("/^<\/". $currentTag. "/", $content))
>>>   // do something

As far as I can see (notice: I'm not a regex-king ;) the regex seems correct
to me. The only thing I'm wondering about is the "/^<" (second last line of
the citation). Together with your expression in the array it results in
preg_match("/<\/http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]




RE: [PHP] Regex question

2002-01-09 Thread Jon Haworth

> If you want the [ to be escaped in the regex you have to "double-escape"
it:
> $x = "\ \["; (sorry, the two \ should be together without a space but my
> stupid mail-app converts the string thinking it's an network address)
> so $x will contain "\[" as you want ( the first backslash escapes the
> second).

Hi Stefan,

Thanks very much for that, it does make sense :-)

Unfortunately it still hasn't fixed the problem... I suppose my question has
now boiled down to "do I need to escape !, <, or - in a regex?" :-)

Cheers
Jon


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]




Re: [PHP] Regex question

2002-01-09 Thread Stefan Rusterholz

> Hi all,
>
> I've got a regex that's working fine, apart from one little problem.
>
> $tags = array ("script",
>"");

A quick shot (perhaps I miss the point ;): if you do
$x = "\[";
then $x will contain "[". If you then do a regex with preg_match("/$x/",
..." eg. then it get's evaluated as preg_match("/[/", ...
If you want the [ to be escaped in the regex you have to "double-escape" it:
$x = "\ \["; (sorry, the two \ should be together without a space but my
stupid mail-app converts the string thinking it's an network address)
so $x will contain "\[" as you want ( the first backslash escapes the
second).

> foreach ($tags as $currentTag)
>   if (preg_match ("/^<\/". $currentTag. "/", $content))
> // do something
>
>
> Witan Jardine
> 13 Southampton Place
> London WC1A 2AL
> Tel: 020 7404 4004

I hope I didn't miss the point and could help you
best regards
Stefan Rusterholz


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]




Re: [PHP] Regex question

2001-07-31 Thread CC Zona

In article 
<[EMAIL PROTECTED]>,
 [EMAIL PROTECTED] (Boaz Yahav) wrote:

> In case anyone is interested, eregi("HTTP/1.[01].302",$output) seems to
> work :)

"." == "any character" (including, but not necessarily, a period).  If you 
want to match a period, escape it or put it in square braces:

eregi("HTTP/1\.[01].302",$output)
   -or-
eregi("HTTP/1[.][01].302",$output)

You might also want to limit what's acceptable before the status code by 
changing ".302" to:
 " 302" //space
   -or-
"[ ]302" //space, made more obvious
   -or-
"[[:space:]]302" //any whitespace character

-- 
CC

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]




RE: [PHP] Regex question

2001-07-31 Thread Boaz Yahav

In case anyone is interested, eregi("HTTP/1.[01].302",$output) seems to
work :)

berber

-Original Message-
From: Boaz Yahav 
Sent: Tuesday, July 31, 2001 2:03 PM
To: PHP General (E-mail)
Subject: [PHP] Regex question


I'm trying to find if a string exists inside a string. Instead of using
strstr() twice I want to use eregi() once.

What I want to check is if "HTTP/1.1 302" or "HTTP/1.0 302" exists in
some $output.

I'm trying something like : 

eregi("[\"HTTP/1.\"]+[0-1]+[\" 302\"]",$output)
eregi("[HTTP/1.]+[0-1]+[ 302]",$output)
eregi("HTTP/1.+[0-1]+ 302",$output)

But I must be off cause it doesn't work.

Anyone?

thanks


berber

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]


--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]




Re: [PHP] RegEx Question

2001-05-21 Thread Gyozo Papp


if (preg_match_all("|testing(.*?);blah|s", $str, $matches))
{
// do what you want with $matches: see in the manual!
 var_dump($matches);
}

- Original Message - 
From: "George E. Papadakis" <[EMAIL PROTECTED]>
To: "PHP List" <[EMAIL PROTECTED]>
Sent: 2001. május 20. 19:18
Subject: [PHP] RegEx Question


> Hi,
> 
> I have an ereg question::.
> $data = a big string ,
> while (ereg ("testing([^;]*);blah(.*)",$data,$args)) {
> $this = $args[1];
> $data = $args[2];
> }
> 
> What I wanna do ,obviously, is to get all the strings between 'testng' and
> 'blah' in an array.
> This will do it, yet when it wont work when special chars such \n exist
> between 'testing' and 'blah'.
> Any ideas?
> 
> 
> 
> -- 
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> To contact the list administrators, e-mail: [EMAIL PROTECTED]
> 


--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]




Re: [PHP] RegEx Question

2001-05-20 Thread Christian Reiniger

On Sunday 20 May 2001 19:18, George E. Papadakis wrote:

> I have an ereg question::.
> $data = a big string ,
> while (ereg ("testing([^;]*);blah(.*)",$data,$args)) {
> $this = $args[1];
> $data = $args[2];
> }
>
> What I wanna do ,obviously, is to get all the strings between 'testng'
> and 'blah' in an array.
> This will do it, yet when it wont work when special chars such \n exist
> between 'testing' and 'blah'.

Use preg_match() with 's' or 'm' as modifier (one of these is correct...)

-- 
Christian Reiniger
LGDC Webmaster (http://sunsite.dk/lgdc/)

The most exciting phrase to hear in science, the one that heralds new
discoveries, is not "Eureka", but "That's funny..."

- Isaac Asimov

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]