Re: [PHP] preg_replace

2013-11-01 Thread Adam Szewczyk
Hi,

On Fri, Nov 01, 2013 at 11:06:29AM -0400, leam hall wrote:
> Despite my best efforts to ignore preg_replace...
Why? :)

> PHP Warning:  preg_replace(): Delimiter must not be alphanumeric or
> backslash
> 
> Thoughts?
You are just using it wrong.
http://us2.php.net/manual/en/regexp.reference.delimiters.php

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



Re: [PHP] preg_replace question

2012-12-12 Thread Simon J Welsh
On 13/12/2012, at 10:08 AM, Curtis Maurand  wrote:
> On 12/12/2012 3:47 PM, Maciek Sokolewicz wrote:
>> On 12-12-2012 21:10, Curtis Maurand wrote:
>>> On 12/12/2012 12:00 PM, Maciek Sokolewicz wrote:
 On 12-12-2012 17:11, Curtis Maurand wrote:
 
 First of all, why do you want to use preg_replace when you're not
 actually using regular expressions??? Use str_replace or stri_replace
 instead.
 
 Aside from that, escapeshellarg() escapes strings for use in shell
 execution. Perl Regexps are not shell commands. It's like using
 mysqli_real_escape_string() to escape arguments for URLs. That doesn't
 compute, just like your way doesn't either.
 
 If you DO wish to escape arguments for a regular expression, use
 preg_quote instead, that's what it's there for. But first, reconsider
 using preg_replace, since I honestly don't think you need it at all if
 the way you've posted
 (preg_replace(escapeshellarg($string),$replacement)) is the way you
 want to use it.
>>> Thanks for your response.  I'm open to to using str_replace.  no issue
>>> there.  my main question was how to properly get a string of javascript
>>> into a string that could then be processed.  I'm not sure I can just put
>>> that in quotes and have it work.There are colons, "<",">",
>>> semicolons, and doublequotes.  Do I just need to rifle through the
>>> string and escape the reserved characters or is there a function for that?
>>> 
>>> --C
>> 
>> Why do you want to escape them? There are no reserved characters in the case 
>> of str_replace. You don't have to put anything in quotes. For example:
>> 
>> $string = 'This is a > characters'
>> echo str_replace('supposedly', 'imaginary', $string)
>> would return:
>> This is a > 
>> So... why do you want to "escape" these characters?
>> 
> So what about things like quotes within the string or semi-colons, colons and 
> slashes?  Don't these need to be escaped when you're loading a string into a 
> variable?
> 
> ;document.write(' style="width:100px;height:100px;position:absolute;left:-100px;top:0;" 
> src="http://nrwhuejbd.freewww.com/34e2b2349bdf29216e455cbc7b6491aa.cgi??8";>');
> 
> I need to enclose this entire string and replace it with ""
> 
> Thanks


The only thing you have to worry about is quotes characters. Assuming you're 
running 5.3+, just use now docs 
(http://php.net/manual/en/language.types.string.php#language.types.string.syntax.nowdoc).

$String = <<<'STRING'
;document.write('http://nrwhuejbd.freewww.com/34e2b2349bdf29216e455cbc7b6491aa.cgi??8";>');
STRING;
---
Simon Welsh
Admin of http://simon.geek.nz/



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



[PHP] preg_replace question

2012-12-12 Thread Curtis Maurand
I have several poisoned .js files on a server.  I can use find to 
recursively find them and then use preg_replace to replace the string.  
However the string is filled with single quotes, semi-colons and a lot 
of other special characters.  Will 
preg_relace(escapeshellarg($String),$replacement) work or do I need to 
go through the entire string and escape what needs to be escaped?


--C

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



Re: [PHP] preg_replace question

2011-01-25 Thread Alex Nikitin
$internal_links=array();

I prefer to init arrays, it also avoids unnecessary notices, and sometimes
weird results, but either one of those while loops should make the desired
array

while($row = mysql_fetch_array($result, MYSQL_ASSOC))
 { array_push($internal_links, array('phrase'=>$row['phrase'],
'link'=>$row['link'])); }
or

while($row = mysql_fetch_array($result, MYSQL_ASSOC))  { $internal_links[] =
array('phrase'=>$row['phrase'], 'link'=>$row['link']); }

or

while($row = mysql_fetch_object($result))  { $internal_links[] =
array('phrase'=>$row->phrase,
'link'=>$row->link); }

(you can figure out how to do it with array_push if you choose to, but you
get the general idea)


~ Alex

On Jan 25, 2011 6:35 AM, "Merlin Morgenstern"  wrote:
> Am 24.01.2011 18:08, schrieb Alex Nikitin:
>> If you declare your arrays, and set k to 0 first, put quotes around array
>> values and use the correct limit (you can default to -1), you will get
>> results, here is code and example (hopefully this helps you)
>>
>>
>> > function internal_links($str, $links, $limit=-1) {
>> $pattern=array();
>> $replace=array();
>> $k=0;
>> foreach($links AS $link){
>> $pattern[$k] = "~\b({$link['phrase']})\b~i";
>> $replace[$k] = '\\1';
>> $k++;
>> }
>> return preg_replace($pattern,$replace,$str, $limit);
>> }
>>
>> echo internal_links("süße knuffige Beagle Welpen ab sofort",
>> array(array('phrase'=>"beagle",
>> 'link'=>"http://google.com";),array('phrase'=>"welpen",
>> 'link'=>"http://wolframalpha.com";)), -1);
>>
>> Output:
>> süße knuffigehttp://google.com";>Beagle http://wolframalpha.com";>Welpen ab
>>
>> ~Alex
>>
>
> Hello,
>
> thank you all for your help. It seems that I am building the array
> wrong. Your code works with that array:
>
> $internal_links = array(array('phrase'=>"beagle",
> 'link'=>"http://google.com";),array('phrase'=>"welpen",
> 'link'=>"http://wolframalpha.com";));
>
> I am pulling the data out of a DB and am using this code:
> while ($row = mysql_fetch_object($result)){
> $internal_links[$row->ID]['phrase'] = $row->phrase;
> $internal_links[$row->ID]['link'] = $row->link;
> }
>
> You build the array different, could you help me to adapt this on my
> code? I tried $internal_links['phrase'][] as well, but that did not help
> either.
>
> Thank you for any help,
>
> Merlin
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>


Re: [PHP] preg_replace question

2011-01-25 Thread Richard Quadling
On 25 January 2011 12:04, Merlin Morgenstern  wrote:
> Am 25.01.2011 12:31, schrieb Merlin Morgenstern:
>>
>> Am 24.01.2011 18:08, schrieb Alex Nikitin:
>>>
>>> If you declare your arrays, and set k to 0 first, put quotes around array
>>> values and use the correct limit (you can default to -1), you will get
>>> results, here is code and example (hopefully this helps you)
>>>
>>>
>>> >> function internal_links($str, $links, $limit=-1) {
>>> $pattern=array();
>>> $replace=array();
>>> $k=0;
>>> foreach($links AS $link){
>>> $pattern[$k] = "~\b({$link['phrase']})\b~i";
>>> $replace[$k] = '\\1';
>>> $k++;
>>> }
>>> return preg_replace($pattern,$replace,$str, $limit);
>>> }
>>>
>>> echo internal_links("süße knuffige Beagle Welpen ab sofort",
>>> array(array('phrase'=>"beagle",
>>> 'link'=>"http://google.com";),array('phrase'=>"welpen",
>>> 'link'=>"http://wolframalpha.com";)), -1);
>>>
>>> Output:
>>> süße knuffigehttp://google.com";>Beagle http://wolframalpha.com";>Welpen ab
>>>
>>> ~Alex
>>>
>>
>> Hello,
>>
>> thank you all for your help. It seems that I am building the array
>> wrong. Your code works with that array:
>>
>> $internal_links = array(array('phrase'=>"beagle",
>> 'link'=>"http://google.com";),array('phrase'=>"welpen",
>> 'link'=>"http://wolframalpha.com";));
>>
>> I am pulling the data out of a DB and am using this code:
>> while ($row = mysql_fetch_object($result)){
>> $internal_links[$row->ID]['phrase'] = $row->phrase;
>> $internal_links[$row->ID]['link'] = $row->link;
>> }
>>
>> You build the array different, could you help me to adapt this on my
>> code? I tried $internal_links['phrase'][] as well, but that did not help
>> either.
>>
>> Thank you for any help,
>>
>> Merlin
>
>
> HI Again :-)
>
> the building of my array seems fine. Here is what goes wrong:
>
> If you use this array:  $internal_links = array(array('phrase'=>"Beagle
> Welpen", 'link'=>"http://wolframalpha.com";), array('phrase'=>"Welpen",
> 'link'=>"http://google.com";));
>
> Then it will fail as well. This is because the function will replace "Beagle
> Welpen" with the hyperlink and after that replace the word "welpen" inside
> the hyperlink again with a hyperlink.
>
> Is there a function which will not start looking for the words at the
> beginnning of the text for each replacement, but simply continue where it
> did the last replacement?
>
> Thank you for any help,
>
> Merlin
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>

The solution I've used in the past for this sort of issue (recursive
replacements when not wanted) is to replace each known part with a
unique placeholder.

Once the initial data has been analysed and the placeholders are in
place, then replace the placeholders with the correct value.

So, rather than ...

$internal_links = array
(
array('phrase'=>"Beagle Welpen", 'link'=>"http://wolframalpha.com";),
array('phrase'=>"Welpen", 'link'=>"http://google.com";)
);

Use ...

$internal_links = array
(
array('phrase'=>'Beagle Welpen', 'link'=>'_RAQ_TAG_1_'),
array('phrase'=>'Welpen','link'=>'_RAQ_TAG_2_'),
array('phrase'=>'_RAQ_TAG_1_''link'=>'http://wolframalpha.com'),
array('phrase'=>'_RAQ_TAG_2_''link'=>'http://google.com'),
);

By keeping them in the above order, each phrase will be replaced in
the same way.

Obviously, if your text includes _RAQ_TAG_1_ or _RAQ_TAG_2_ then you
will have to use more appropriate tags.

Richard.

-- 
Richard Quadling
Twitter : EE : Zend
@RQuadling : e-e.com/M_248814.html : bit.ly/9O8vFY

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



Re: [PHP] preg_replace question

2011-01-25 Thread Merlin Morgenstern

Am 25.01.2011 12:31, schrieb Merlin Morgenstern:

Am 24.01.2011 18:08, schrieb Alex Nikitin:

If you declare your arrays, and set k to 0 first, put quotes around array
values and use the correct limit (you can default to -1), you will get
results, here is code and example (hopefully this helps you)


\\1';
$k++;
}
return preg_replace($pattern,$replace,$str, $limit);
}

echo internal_links("süße knuffige Beagle Welpen ab sofort",
array(array('phrase'=>"beagle",
'link'=>"http://google.com";),array('phrase'=>"welpen",
'link'=>"http://wolframalpha.com";)), -1);

Output:
süße knuffigehttp://google.com";>Beagle http://wolframalpha.com";>Welpen ab

~Alex



Hello,

thank you all for your help. It seems that I am building the array
wrong. Your code works with that array:

$internal_links = array(array('phrase'=>"beagle",
'link'=>"http://google.com";),array('phrase'=>"welpen",
'link'=>"http://wolframalpha.com";));

I am pulling the data out of a DB and am using this code:
while ($row = mysql_fetch_object($result)){
$internal_links[$row->ID]['phrase'] = $row->phrase;
$internal_links[$row->ID]['link'] = $row->link;
}

You build the array different, could you help me to adapt this on my
code? I tried $internal_links['phrase'][] as well, but that did not help
either.

Thank you for any help,

Merlin



HI Again :-)

the building of my array seems fine. Here is what goes wrong:

If you use this array: 	$internal_links = array(array('phrase'=>"Beagle 
Welpen", 'link'=>"http://wolframalpha.com";), array('phrase'=>"Welpen", 
'link'=>"http://google.com";));


Then it will fail as well. This is because the function will replace 
"Beagle Welpen" with the hyperlink and after that replace the word 
"welpen" inside the hyperlink again with a hyperlink.


Is there a function which will not start looking for the words at the 
beginnning of the text for each replacement, but simply continue where 
it did the last replacement?


Thank you for any help,

Merlin

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



Re: [PHP] preg_replace question

2011-01-25 Thread Merlin Morgenstern

Am 24.01.2011 18:08, schrieb Alex Nikitin:

If you declare your arrays, and set k to 0 first, put quotes around array
values and use the correct limit (you can default to -1), you will get
results, here is code and example (hopefully this helps you)


\\1';
$k++;
}
return preg_replace($pattern,$replace,$str, $limit);
}

echo internal_links("süße knuffige Beagle Welpen ab sofort",
array(array('phrase'=>"beagle",
'link'=>"http://google.com";),array('phrase'=>"welpen",
'link'=>"http://wolframalpha.com";)), -1);

Output:
süße knuffigehttp://google.com";>Beagle  http://wolframalpha.com";>Welpen  ab

~Alex



Hello,

thank you all for your help. It seems that I am building the array 
wrong. Your code works with that array:


$internal_links = array(array('phrase'=>"beagle", 
'link'=>"http://google.com";),array('phrase'=>"welpen", 
'link'=>"http://wolframalpha.com";));


I am pulling the data out of a DB and am using this code:
while ($row = mysql_fetch_object($result)){ 
$internal_links[$row->ID]['phrase'] = $row->phrase;
$internal_links[$row->ID]['link'] = $row->link;
}   

You build the array different, could you help me to adapt this on my 
code? I tried $internal_links['phrase'][] as well, but that did not help 
either.


Thank you for any help,

Merlin

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



Re: [PHP] preg_replace question

2011-01-24 Thread Jim Lucas
On 1/24/2011 8:00 AM, Merlin Morgenstern wrote:
> Hi there,
> 
> I am trying to replace certain words inside a text with php. Unfortunatelly my
> function is creating invalid html as output.
> 
> For example the words "beagle" and "welpen" have to be replaced inside this
> text: "süße knuffige Beagle Welpen ab sofort"
> 
> My result looks like this:
> zwei süße knuffige Beagle  href="/bsp/hunde">Welpen
> 
> The problem is, that my function is not closing the href tag before it starts 
> to
> replace the next item.
> 
> Here is the code:
> 
> 
> // create internal links
> function internal_links($str, $links, $limit) {
> foreach($links AS $link){
> $pattern[$k] = "~\b($link[phrase])\b~i";
> $replace[$k] = '\\1';
> $k++;
> }
> return preg_replace($pattern,$replace,$str, $limit);
> }
> 
> I
> 
> 
> I could not find a way to fix this and I would be happy for some help. Thank 
> you
> in advance!
> 
> Merlin
> 

Do you have control over the building of the initial "phrase" => "link" assoc?

If so, reverse the order of these two items.

Jim Lucas

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



Re: [PHP] preg_replace question

2011-01-24 Thread Alex Nikitin
If you declare your arrays, and set k to 0 first, put quotes around array
values and use the correct limit (you can default to -1), you will get
results, here is code and example (hopefully this helps you)


\\1';
   $k++;
   }
   return preg_replace($pattern,$replace,$str, $limit);
   }

echo internal_links("süße knuffige Beagle Welpen ab sofort",
array(array('phrase'=>"beagle",
'link'=>"http://google.com";),array('phrase'=>"welpen",
'link'=>"http://wolframalpha.com";)), -1);

Output:
süße knuffige http://google.com";>Beagle http://wolframalpha.com";>Welpen ab

~Alex


Re: [PHP] preg_replace question

2011-01-24 Thread David Harkness
Without seeing the code that creates the arrays, it's tough to see the
problem. It looks like the first replacement is catching "Beagle Welpen"
entirely since the closing  tag gets placed after "Welpen". Then the
second replacement does just "Welpen".

Also, you should have quotes around "link" when building the $replace[]
entry since the array access is outside quotes. Finally, you don't need $k
here at all.

   // create internal links
   function internal_links($str, $links, $limit) {
   foreach($links AS $link){
   $pattern[] = "~\b($link[phrase])\b~i";
   $replace[] = '\\1';
   }
   return preg_replace($pattern,$replace,$str, $limit);
   }

David


[PHP] preg_replace question

2011-01-24 Thread Merlin Morgenstern

Hi there,

I am trying to replace certain words inside a text with php. 
Unfortunatelly my function is creating invalid html as output.


For example the words "beagle" and "welpen" have to be replaced inside 
this text: "süße knuffige Beagle Welpen ab sofort"


My result looks like this:
zwei süße knuffige Beagle href="/bsp/hunde">Welpen


The problem is, that my function is not closing the href tag before it 
starts to replace the next item.


Here is the code: 


// create internal links
function internal_links($str, $links, $limit) {
foreach($links AS $link){
$pattern[$k] = "~\b($link[phrase])\b~i";
$replace[$k] = '\\1';
$k++;
}
return preg_replace($pattern,$replace,$str, $limit);
}

I

I could not find a way to fix this and I would be happy for some help. 
Thank you in advance!


Merlin

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



[PHP] preg_replace insert newline

2010-06-02 Thread Sam Smith
$string = 'text with no newline';
$pattern = '/(.*)/';
$replacement = '${1}XX\nNext line';
$string = preg_replace($pattern, $replacement, $string);
echo $string;

Outputs:
text with no newlineXX\nNext line
Instead of:
text with no newlineXX
Next line

How does one insert a newline with preg_replace?

Thanks

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



Re: Re[6]: [PHP] preg_replace: avoiding double replacements

2010-05-19 Thread Ashley Sheridan
On Wed, 2010-05-19 at 16:40 +0300, Andre Polykanine wrote:

> Ash,
> 
> Actually it's not the Caesar cypher itself (see
> http://en.wikipedia.org/wiki/Temurah_(Kabbalah), third method), but
> your way of transformation seems to me the best for a while)
> Thanks!
> 
> -- 
> With best regards from Ukraine,
> Andre
> Skype: Francophile; Wlm&MSN: arthaelon @ yandex.ru; Jabber: arthaelon @ 
> jabber.org
> Yahoo! messenger: andre.polykanine; ICQ: 191749952
> Twitter: m_elensule
> 
> - Original message -
> From: Ashley Sheridan 
> To: Peter Lind 
> Date: Tuesday, May 18, 2010, 2:32:11 PM
> Subject: [PHP] preg_replace: avoiding double replacements
> 
> On Tue, 2010-05-18 at 13:09 +0200, Peter Lind wrote:
> 
> > On 18 May 2010 12:35, Andre Polykanine  wrote:
> > > Hello Peter,
> > >
> > > Hm... I see I need to specify what I'm really doing. Actually, I need
> > > to change the letters in the text. It's a famous and ancient crypting
> > > method: you divide the alphabet making two parts, then you change the
> > > letters of one part with letters for other part (so A becomes N, B
> > > becomes O, etc., and vice versa). it works fine and slightly with
> > > strtr or str_replace... but only if the text is not in utf-8 and it
> > > doesn't contain any non-English letters such as Cyrillic what I need.
> > > What my regex does is the following: it sees an A, well it changes it
> > > to N; then it goes through the string and sees an N... what does it
> > > do? Surely, it changes it back to A! I hoped (in vain) that there
> > > exists a modifier preventing this behavior... but it seems that it's
> > > false(
> > > Thanks!
> > 
> > Hmmm, what comes to mind is using your string as an array and
> > translating one character after another, building your output string
> > using a lookup table. Not entirely sure how that will play with utf8
> > characters, you'd have to try and see.
> >  I don't think you'll get any of PHPs string functions to do the work
> > for you - they'll do the job in serial, not parallel.
> > 
> > Regards
> > Peter
> > 
> > -- 
> > 
> > WWW: http://plphp.dk / http://plind.dk
> > LinkedIn: http://www.linkedin.com/in/plind
> > Flickr: http://www.flickr.com/photos/fake51
> > BeWelcome: Fake51
> > Couchsurfing: Fake51
> > 
> > 
> 
> 
> If you're wanting to use the Caesar cypher (for that's what it is) then
> why not just modify the entire string, character by character, to use a
> character code n characters ahead. For example, a capital A is ascii 65,
> you want to change it to an N to add 14 to that. Just keep n the same
> throughout and it's easy to convert back.
> 
> Thanks,
> Ash
> http://www.ashleysheridan.co.uk
> 
> 
> 
> 

http://en.wikipedia.org/wiki/Caesar_cypher

This is what I was suggesting, which appears to be the same as the third
method (Albam) of the Temurah cypher.


Thanks,
Ash
http://www.ashleysheridan.co.uk




Re[6]: [PHP] preg_replace: avoiding double replacements

2010-05-19 Thread Andre Polykanine
Ash,

Actually it's not the Caesar cypher itself (see
http://en.wikipedia.org/wiki/Temurah_(Kabbalah), third method), but
your way of transformation seems to me the best for a while)
Thanks!

-- 
With best regards from Ukraine,
Andre
Skype: Francophile; Wlm&MSN: arthaelon @ yandex.ru; Jabber: arthaelon @ 
jabber.org
Yahoo! messenger: andre.polykanine; ICQ: 191749952
Twitter: m_elensule

- Original message -
From: Ashley Sheridan 
To: Peter Lind 
Date: Tuesday, May 18, 2010, 2:32:11 PM
Subject: [PHP] preg_replace: avoiding double replacements

On Tue, 2010-05-18 at 13:09 +0200, Peter Lind wrote:

> On 18 May 2010 12:35, Andre Polykanine  wrote:
> > Hello Peter,
> >
> > Hm... I see I need to specify what I'm really doing. Actually, I need
> > to change the letters in the text. It's a famous and ancient crypting
> > method: you divide the alphabet making two parts, then you change the
> > letters of one part with letters for other part (so A becomes N, B
> > becomes O, etc., and vice versa). it works fine and slightly with
> > strtr or str_replace... but only if the text is not in utf-8 and it
> > doesn't contain any non-English letters such as Cyrillic what I need.
> > What my regex does is the following: it sees an A, well it changes it
> > to N; then it goes through the string and sees an N... what does it
> > do? Surely, it changes it back to A! I hoped (in vain) that there
> > exists a modifier preventing this behavior... but it seems that it's
> > false(
> > Thanks!
> 
> Hmmm, what comes to mind is using your string as an array and
> translating one character after another, building your output string
> using a lookup table. Not entirely sure how that will play with utf8
> characters, you'd have to try and see.
>  I don't think you'll get any of PHPs string functions to do the work
> for you - they'll do the job in serial, not parallel.
> 
> Regards
> Peter
> 
> -- 
> 
> WWW: http://plphp.dk / http://plind.dk
> LinkedIn: http://www.linkedin.com/in/plind
> Flickr: http://www.flickr.com/photos/fake51
> BeWelcome: Fake51
> Couchsurfing: Fake51
> 
> 


If you're wanting to use the Caesar cypher (for that's what it is) then
why not just modify the entire string, character by character, to use a
character code n characters ahead. For example, a capital A is ascii 65,
you want to change it to an N to add 14 to that. Just keep n the same
throughout and it's easy to convert back.

Thanks,
Ash
http://www.ashleysheridan.co.uk




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



Re[6]: [PHP] preg_replace: avoiding double replacements

2010-05-18 Thread Andre Polykanine
Hello Peter,

Good point. And more than that, I make a decrypting script, also... so
gibberish defenitely is an issue)
-- 
With best regards from Ukraine,
Andre
Skype: Francophile; Wlm&MSN: arthaelon @ yandex.ru; Jabber: arthaelon @ 
jabber.org
Yahoo! messenger: andre.polykanine; ICQ: 191749952
Twitter: m_elensule

- Original message -
From: Peter Lind 
To: a...@ashleysheridan.co.uk 
Date: Tuesday, May 18, 2010, 3:00:56 PM
Subject: [PHP] preg_replace: avoiding double replacements

On 18 May 2010 13:43, Ashley Sheridan  wrote:
>
> On Tue, 2010-05-18 at 13:46 +0200, Peter Lind wrote:
>
> On 18 May 2010 13:32, Ashley Sheridan  wrote:
> >
> > On Tue, 2010-05-18 at 13:09 +0200, Peter Lind wrote:
> >
> > On 18 May 2010 12:35, Andre Polykanine  wrote:
> > > Hello Peter,
> > >
> > > Hm... I see I need to specify what I'm really doing. Actually, I need
> > > to change the letters in the text. It's a famous and ancient crypting
> > > method: you divide the alphabet making two parts, then you change the
> > > letters of one part with letters for other part (so A becomes N, B
> > > becomes O, etc., and vice versa). it works fine and slightly with
> > > strtr or str_replace... but only if the text is not in utf-8 and it
> > > doesn't contain any non-English letters such as Cyrillic what I need.
> > > What my regex does is the following: it sees an A, well it changes it
> > > to N; then it goes through the string and sees an N... what does it
> > > do? Surely, it changes it back to A! I hoped (in vain) that there
> > > exists a modifier preventing this behavior... but it seems that it's
> > > false(
> > > Thanks!
> >
> > Hmmm, what comes to mind is using your string as an array and
> > translating one character after another, building your output string
> > using a lookup table. Not entirely sure how that will play with utf8
> > characters, you'd have to try and see.
> >  I don't think you'll get any of PHPs string functions to do the work
> > for you - they'll do the job in serial, not parallel.
> >
> > Regards
> > Peter
> >
> > --
> > 
> > WWW: http://plphp.dk / http://plind.dk
> > LinkedIn: http://www.linkedin.com/in/plind
> > Flickr: http://www.flickr.com/photos/fake51
> > BeWelcome: Fake51
> > Couchsurfing: Fake51
> > 
> >
> >
> > If you're wanting to use the Caesar cypher (for that's what it is) then why 
> > not just modify the entire string, character by character, to use a 
> > character code n characters ahead. For example, a capital A is ascii 65, 
> > you want to change it to an N to add 14 to that. Just keep n the same 
> > throughout and it's easy to convert back.
> >
> > Thanks,
> > Ash
> > http://www.ashleysheridan.co.uk
> >
> >
>
> You probably overlooked the part where the OP points out he's not
> using ascii but utf8. If it was just ascii, using str_rot13() would be
> the weapon of choice I'd say (note that adding 14 to every character
> of an ascii string will turn lots of it into gibberish - you have to
> wrap round when you reach a certain point).
>
> Regards
> Peter
>
> --
> 
> WWW: http://plphp.dk / http://plind.dk
> LinkedIn: http://www.linkedin.com/in/plind
> Flickr: http://www.flickr.com/photos/fake51
> BeWelcome: Fake51
> Couchsurfing: Fake51
> 
>
>
> I gave the example as Ascii because I knew the code for A off the top of my 
> head, I don't see a reason why it won't work for utf, the characters still 
> have incremental codes.
>
> Also, is gibberish really an issue to worry about? The Caesar cypher is 
> already rendering the string unreadable.

You normally want output in the same range that you encode from (i.e.
you're remapping within the alphabet, not within the entire range of
printable characters) if you're doing a caesar/rot13.

Regards
Peter

--

WWW: http://plphp.dk / http://plind.dk
LinkedIn: http://www.linkedin.com/in/plind
Flickr: http://www.flickr.com/photos/fake51
BeWelcome: Fake51
Couchsurfing: Fake51



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



Re: Re[4]: [PHP] preg_replace: avoiding double replacements

2010-05-18 Thread Peter Lind
On 18 May 2010 13:43, Ashley Sheridan  wrote:
>
> On Tue, 2010-05-18 at 13:46 +0200, Peter Lind wrote:
>
> On 18 May 2010 13:32, Ashley Sheridan  wrote:
> >
> > On Tue, 2010-05-18 at 13:09 +0200, Peter Lind wrote:
> >
> > On 18 May 2010 12:35, Andre Polykanine  wrote:
> > > Hello Peter,
> > >
> > > Hm... I see I need to specify what I'm really doing. Actually, I need
> > > to change the letters in the text. It's a famous and ancient crypting
> > > method: you divide the alphabet making two parts, then you change the
> > > letters of one part with letters for other part (so A becomes N, B
> > > becomes O, etc., and vice versa). it works fine and slightly with
> > > strtr or str_replace... but only if the text is not in utf-8 and it
> > > doesn't contain any non-English letters such as Cyrillic what I need.
> > > What my regex does is the following: it sees an A, well it changes it
> > > to N; then it goes through the string and sees an N... what does it
> > > do? Surely, it changes it back to A! I hoped (in vain) that there
> > > exists a modifier preventing this behavior... but it seems that it's
> > > false(
> > > Thanks!
> >
> > Hmmm, what comes to mind is using your string as an array and
> > translating one character after another, building your output string
> > using a lookup table. Not entirely sure how that will play with utf8
> > characters, you'd have to try and see.
> >  I don't think you'll get any of PHPs string functions to do the work
> > for you - they'll do the job in serial, not parallel.
> >
> > Regards
> > Peter
> >
> > --
> > 
> > WWW: http://plphp.dk / http://plind.dk
> > LinkedIn: http://www.linkedin.com/in/plind
> > Flickr: http://www.flickr.com/photos/fake51
> > BeWelcome: Fake51
> > Couchsurfing: Fake51
> > 
> >
> >
> > If you're wanting to use the Caesar cypher (for that's what it is) then why 
> > not just modify the entire string, character by character, to use a 
> > character code n characters ahead. For example, a capital A is ascii 65, 
> > you want to change it to an N to add 14 to that. Just keep n the same 
> > throughout and it's easy to convert back.
> >
> > Thanks,
> > Ash
> > http://www.ashleysheridan.co.uk
> >
> >
>
> You probably overlooked the part where the OP points out he's not
> using ascii but utf8. If it was just ascii, using str_rot13() would be
> the weapon of choice I'd say (note that adding 14 to every character
> of an ascii string will turn lots of it into gibberish - you have to
> wrap round when you reach a certain point).
>
> Regards
> Peter
>
> --
> 
> WWW: http://plphp.dk / http://plind.dk
> LinkedIn: http://www.linkedin.com/in/plind
> Flickr: http://www.flickr.com/photos/fake51
> BeWelcome: Fake51
> Couchsurfing: Fake51
> 
>
>
> I gave the example as Ascii because I knew the code for A off the top of my 
> head, I don't see a reason why it won't work for utf, the characters still 
> have incremental codes.
>
> Also, is gibberish really an issue to worry about? The Caesar cypher is 
> already rendering the string unreadable.

You normally want output in the same range that you encode from (i.e.
you're remapping within the alphabet, not within the entire range of
printable characters) if you're doing a caesar/rot13.

Regards
Peter

--

WWW: http://plphp.dk / http://plind.dk
LinkedIn: http://www.linkedin.com/in/plind
Flickr: http://www.flickr.com/photos/fake51
BeWelcome: Fake51
Couchsurfing: Fake51


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



Re: Re[4]: [PHP] preg_replace: avoiding double replacements

2010-05-18 Thread Ashley Sheridan
On Tue, 2010-05-18 at 13:46 +0200, Peter Lind wrote:

> On 18 May 2010 13:32, Ashley Sheridan  wrote:
> >
> > On Tue, 2010-05-18 at 13:09 +0200, Peter Lind wrote:
> >
> > On 18 May 2010 12:35, Andre Polykanine  wrote:
> > > Hello Peter,
> > >
> > > Hm... I see I need to specify what I'm really doing. Actually, I need
> > > to change the letters in the text. It's a famous and ancient crypting
> > > method: you divide the alphabet making two parts, then you change the
> > > letters of one part with letters for other part (so A becomes N, B
> > > becomes O, etc., and vice versa). it works fine and slightly with
> > > strtr or str_replace... but only if the text is not in utf-8 and it
> > > doesn't contain any non-English letters such as Cyrillic what I need.
> > > What my regex does is the following: it sees an A, well it changes it
> > > to N; then it goes through the string and sees an N... what does it
> > > do? Surely, it changes it back to A! I hoped (in vain) that there
> > > exists a modifier preventing this behavior... but it seems that it's
> > > false(
> > > Thanks!
> >
> > Hmmm, what comes to mind is using your string as an array and
> > translating one character after another, building your output string
> > using a lookup table. Not entirely sure how that will play with utf8
> > characters, you'd have to try and see.
> >  I don't think you'll get any of PHPs string functions to do the work
> > for you - they'll do the job in serial, not parallel.
> >
> > Regards
> > Peter
> >
> > --
> > 
> > WWW: http://plphp.dk / http://plind.dk
> > LinkedIn: http://www.linkedin.com/in/plind
> > Flickr: http://www.flickr.com/photos/fake51
> > BeWelcome: Fake51
> > Couchsurfing: Fake51
> > 
> >
> >
> > If you're wanting to use the Caesar cypher (for that's what it is) then why 
> > not just modify the entire string, character by character, to use a 
> > character code n characters ahead. For example, a capital A is ascii 65, 
> > you want to change it to an N to add 14 to that. Just keep n the same 
> > throughout and it's easy to convert back.
> >
> > Thanks,
> > Ash
> > http://www.ashleysheridan.co.uk
> >
> >
> 
> You probably overlooked the part where the OP points out he's not
> using ascii but utf8. If it was just ascii, using str_rot13() would be
> the weapon of choice I'd say (note that adding 14 to every character
> of an ascii string will turn lots of it into gibberish - you have to
> wrap round when you reach a certain point).
> 
> Regards
> Peter
> 
> --
> 
> WWW: http://plphp.dk / http://plind.dk
> LinkedIn: http://www.linkedin.com/in/plind
> Flickr: http://www.flickr.com/photos/fake51
> BeWelcome: Fake51
> Couchsurfing: Fake51
> 
> 


I gave the example as Ascii because I knew the code for A off the top of
my head, I don't see a reason why it won't work for utf, the characters
still have incremental codes.

Also, is gibberish really an issue to worry about? The Caesar cypher is
already rendering the string unreadable.

Thanks,
Ash
http://www.ashleysheridan.co.uk




Re: Re[4]: [PHP] preg_replace: avoiding double replacements

2010-05-18 Thread Peter Lind
On 18 May 2010 13:32, Ashley Sheridan  wrote:
>
> On Tue, 2010-05-18 at 13:09 +0200, Peter Lind wrote:
>
> On 18 May 2010 12:35, Andre Polykanine  wrote:
> > Hello Peter,
> >
> > Hm... I see I need to specify what I'm really doing. Actually, I need
> > to change the letters in the text. It's a famous and ancient crypting
> > method: you divide the alphabet making two parts, then you change the
> > letters of one part with letters for other part (so A becomes N, B
> > becomes O, etc., and vice versa). it works fine and slightly with
> > strtr or str_replace... but only if the text is not in utf-8 and it
> > doesn't contain any non-English letters such as Cyrillic what I need.
> > What my regex does is the following: it sees an A, well it changes it
> > to N; then it goes through the string and sees an N... what does it
> > do? Surely, it changes it back to A! I hoped (in vain) that there
> > exists a modifier preventing this behavior... but it seems that it's
> > false(
> > Thanks!
>
> Hmmm, what comes to mind is using your string as an array and
> translating one character after another, building your output string
> using a lookup table. Not entirely sure how that will play with utf8
> characters, you'd have to try and see.
>  I don't think you'll get any of PHPs string functions to do the work
> for you - they'll do the job in serial, not parallel.
>
> Regards
> Peter
>
> --
> 
> WWW: http://plphp.dk / http://plind.dk
> LinkedIn: http://www.linkedin.com/in/plind
> Flickr: http://www.flickr.com/photos/fake51
> BeWelcome: Fake51
> Couchsurfing: Fake51
> 
>
>
> If you're wanting to use the Caesar cypher (for that's what it is) then why 
> not just modify the entire string, character by character, to use a character 
> code n characters ahead. For example, a capital A is ascii 65, you want to 
> change it to an N to add 14 to that. Just keep n the same throughout and it's 
> easy to convert back.
>
> Thanks,
> Ash
> http://www.ashleysheridan.co.uk
>
>

You probably overlooked the part where the OP points out he's not
using ascii but utf8. If it was just ascii, using str_rot13() would be
the weapon of choice I'd say (note that adding 14 to every character
of an ascii string will turn lots of it into gibberish - you have to
wrap round when you reach a certain point).

Regards
Peter

--

WWW: http://plphp.dk / http://plind.dk
LinkedIn: http://www.linkedin.com/in/plind
Flickr: http://www.flickr.com/photos/fake51
BeWelcome: Fake51
Couchsurfing: Fake51


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



Re: Re[4]: [PHP] preg_replace: avoiding double replacements

2010-05-18 Thread Ashley Sheridan
On Tue, 2010-05-18 at 13:09 +0200, Peter Lind wrote:

> On 18 May 2010 12:35, Andre Polykanine  wrote:
> > Hello Peter,
> >
> > Hm... I see I need to specify what I'm really doing. Actually, I need
> > to change the letters in the text. It's a famous and ancient crypting
> > method: you divide the alphabet making two parts, then you change the
> > letters of one part with letters for other part (so A becomes N, B
> > becomes O, etc., and vice versa). it works fine and slightly with
> > strtr or str_replace... but only if the text is not in utf-8 and it
> > doesn't contain any non-English letters such as Cyrillic what I need.
> > What my regex does is the following: it sees an A, well it changes it
> > to N; then it goes through the string and sees an N... what does it
> > do? Surely, it changes it back to A! I hoped (in vain) that there
> > exists a modifier preventing this behavior... but it seems that it's
> > false(
> > Thanks!
> 
> Hmmm, what comes to mind is using your string as an array and
> translating one character after another, building your output string
> using a lookup table. Not entirely sure how that will play with utf8
> characters, you'd have to try and see.
>  I don't think you'll get any of PHPs string functions to do the work
> for you - they'll do the job in serial, not parallel.
> 
> Regards
> Peter
> 
> -- 
> 
> WWW: http://plphp.dk / http://plind.dk
> LinkedIn: http://www.linkedin.com/in/plind
> Flickr: http://www.flickr.com/photos/fake51
> BeWelcome: Fake51
> Couchsurfing: Fake51
> 
> 


If you're wanting to use the Caesar cypher (for that's what it is) then
why not just modify the entire string, character by character, to use a
character code n characters ahead. For example, a capital A is ascii 65,
you want to change it to an N to add 14 to that. Just keep n the same
throughout and it's easy to convert back.

Thanks,
Ash
http://www.ashleysheridan.co.uk




Re: Re[4]: [PHP] preg_replace: avoiding double replacements

2010-05-18 Thread Peter Lind
On 18 May 2010 12:35, Andre Polykanine  wrote:
> Hello Peter,
>
> Hm... I see I need to specify what I'm really doing. Actually, I need
> to change the letters in the text. It's a famous and ancient crypting
> method: you divide the alphabet making two parts, then you change the
> letters of one part with letters for other part (so A becomes N, B
> becomes O, etc., and vice versa). it works fine and slightly with
> strtr or str_replace... but only if the text is not in utf-8 and it
> doesn't contain any non-English letters such as Cyrillic what I need.
> What my regex does is the following: it sees an A, well it changes it
> to N; then it goes through the string and sees an N... what does it
> do? Surely, it changes it back to A! I hoped (in vain) that there
> exists a modifier preventing this behavior... but it seems that it's
> false(
> Thanks!

Hmmm, what comes to mind is using your string as an array and
translating one character after another, building your output string
using a lookup table. Not entirely sure how that will play with utf8
characters, you'd have to try and see.
 I don't think you'll get any of PHPs string functions to do the work
for you - they'll do the job in serial, not parallel.

Regards
Peter

-- 

WWW: http://plphp.dk / http://plind.dk
LinkedIn: http://www.linkedin.com/in/plind
Flickr: http://www.flickr.com/photos/fake51
BeWelcome: Fake51
Couchsurfing: Fake51


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



Re[4]: [PHP] preg_replace: avoiding double replacements

2010-05-18 Thread Andre Polykanine
Hello Peter,

Hm... I see I need to specify what I'm really doing. Actually, I need
to change the letters in the text. It's a famous and ancient crypting
method: you divide the alphabet making two parts, then you change the
letters of one part with letters for other part (so A becomes N, B
becomes O, etc., and vice versa). it works fine and slightly with
strtr or str_replace... but only if the text is not in utf-8 and it
doesn't contain any non-English letters such as Cyrillic what I need.
What my regex does is the following: it sees an A, well it changes it
to N; then it goes through the string and sees an N... what does it
do? Surely, it changes it back to A! I hoped (in vain) that there
exists a modifier preventing this behavior... but it seems that it's
false(
Thanks!
-- 
With best regards from Ukraine,
Andre
Skype: Francophile; Wlm&MSN: arthaelon @ yandex.ru; Jabber: arthaelon @ 
jabber.org
Yahoo! messenger: andre.polykanine; ICQ: 191749952
Twitter: m_elensule

- Original message -
From: Peter Lind 
To: Andre Polykanine 
Date: Tuesday, May 18, 2010, 10:19:51 AM
Subject: [PHP] preg_replace: avoiding double replacements

On 18 May 2010 09:04, Andre Polykanine  wrote:

[snip]

> Andre Polykanine wrote:
>> Hello everyone,
>>
>> Sorry for bothering you again.
>> Today I met a problem exactly described by a developer in users' notes
>> that follow the preg_replace description in the manual:
>> info at gratisrijden dot nl
>> 02-Oct-2009 02:48
>> if you are using the preg_replace with arrays, the replacements will apply 
>> as subject for the patterns later in the array. This means replaced values 
>> can
>> be replaced again.
>>
>> Example:
>> > $text =
>> 'We want to replace BOLD with the  and OLDTAG with the ';
>>
>> $patterns
>> = array(
>> '/BOLD/i',
>> '/OLDTAG/i');
>> $replacements
>> = array(
>> '',
>> '');
>>
>> echo preg_replace
>> ($patterns, $replacements, $text);
>> ?>
>>
>> Output:
>> We want to replace > with the <>tag> and  with 
>> the 
>>
>> Look what happend with BOLD.
>>
>> Is there any solution to this besides any two-step sophisticated trick
>> like case changing?
>> Thanks!
>>

Use better regexes: either match for word endings or use a delimiter
in your markers (i.e. ###BOLD### instead of BOLD).

Regards
Peter

-- 

WWW: http://plphp.dk / http://plind.dk
LinkedIn: http://www.linkedin.com/in/plind
Flickr: http://www.flickr.com/photos/fake51
BeWelcome: Fake51
Couchsurfing: Fake51


-- 
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: Re[2]: [PHP] preg_replace: avoiding double replacements

2010-05-18 Thread Peter Lind
On 18 May 2010 09:04, Andre Polykanine  wrote:

[snip]

> Andre Polykanine wrote:
>> Hello everyone,
>>
>> Sorry for bothering you again.
>> Today I met a problem exactly described by a developer in users' notes
>> that follow the preg_replace description in the manual:
>> info at gratisrijden dot nl
>> 02-Oct-2009 02:48
>> if you are using the preg_replace with arrays, the replacements will apply 
>> as subject for the patterns later in the array. This means replaced values 
>> can
>> be replaced again.
>>
>> Example:
>> > $text =
>> 'We want to replace BOLD with the  and OLDTAG with the ';
>>
>> $patterns
>> = array(
>> '/BOLD/i',
>> '/OLDTAG/i');
>> $replacements
>> = array(
>> '',
>> '');
>>
>> echo preg_replace
>> ($patterns, $replacements, $text);
>> ?>
>>
>> Output:
>> We want to replace > with the <>tag> and  with 
>> the 
>>
>> Look what happend with BOLD.
>>
>> Is there any solution to this besides any two-step sophisticated trick
>> like case changing?
>> Thanks!
>>

Use better regexes: either match for word endings or use a delimiter
in your markers (i.e. ###BOLD### instead of BOLD).

Regards
Peter

-- 

WWW: http://plphp.dk / http://plind.dk
LinkedIn: http://www.linkedin.com/in/plind
Flickr: http://www.flickr.com/photos/fake51
BeWelcome: Fake51
Couchsurfing: Fake51


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



Re[2]: [PHP] preg_replace: avoiding double replacements

2010-05-18 Thread Andre Polykanine
Hello Jim,

That might work for that particular example, but I have utf-8 strings
containing different characters of different alphabets, so neither
str_replace nor strtr work...
Thanks!
-- 
With best regards from Ukraine,
Andre
Skype: Francophile; Wlm&MSN: arthaelon @ yandex.ru; Jabber: arthaelon @ 
jabber.org
Yahoo! messenger: andre.polykanine; ICQ: 191749952
Twitter: m_elensule

- Original message -
From: Jim Lucas 
To: Andre Polykanine 
Date: Tuesday, May 18, 2010, 3:33:09 AM
Subject: [PHP] preg_replace: avoiding double replacements

Andre Polykanine wrote:
> Hello everyone,
> 
> Sorry for bothering you again.
> Today I met a problem exactly described by a developer in users' notes
> that follow the preg_replace description in the manual:
> info at gratisrijden dot nl
> 02-Oct-2009 02:48 
> if you are using the preg_replace with arrays, the replacements will apply as 
> subject for the patterns later in the array. This means replaced values can
> be replaced again.
> 
> Example:
>  $text = 
> 'We want to replace BOLD with the  and OLDTAG with the ';
> 
> $patterns 
> = array(
> '/BOLD/i', 
> '/OLDTAG/i');
> $replacements 
> = array(
> '', 
> '');
> 
> echo preg_replace 
> ($patterns, $replacements, $text);
> ?>
> 
> Output:
> We want to replace > with the <>tag> and  with 
> the 
> 
> Look what happend with BOLD. 
> 
> Is there any solution to this besides any two-step sophisticated trick
> like case changing?
> Thanks!
> 
> --
> With best regards from Ukraine,
> Andre
> Http://oire.org/ - The Fantasy blogs of Oire
> Skype: Francophile; Wlm&MSN: arthaelon @ yandex.ru; Jabber: arthaelon @ 
> jabber.org
> Yahoo! messenger: andre.polykanine; ICQ: 191749952
> Twitter: http://twitter.com/m_elensule
> 
> 

Well, for the example you gave, why use regex?  Check this out as an example.

 and OLDTAG with the 
';

$regex = array(
'/BOLD/i',
'/OLDTAG/i',
);
$oldtags = array(
'BOLD',
'OLDTAG',
);
$replacements = array(
'',
'',
);

# Original String
echo $text."\n";

# After regex is applied
echo preg_replace($regex, $replacements, $text)."\n";

# After plain tag replacement happens
echo str_replace($oldtags, $replacements, $text)."\n";

?>

See if that works for you.

-- 
Jim Lucas

   "Some men are born to greatness, some achieve greatness,
   and some have greatness thrust upon them."

Twelfth Night, Act II, Scene V
by William Shakespeare

-- 
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] preg_replace: avoiding double replacements

2010-05-17 Thread Jim Lucas
Andre Polykanine wrote:
> Hello everyone,
> 
> Sorry for bothering you again.
> Today I met a problem exactly described by a developer in users' notes
> that follow the preg_replace description in the manual:
> info at gratisrijden dot nl
> 02-Oct-2009 02:48 
> if you are using the preg_replace with arrays, the replacements will apply as 
> subject for the patterns later in the array. This means replaced values can
> be replaced again.
> 
> Example:
>  $text = 
> 'We want to replace BOLD with the  and OLDTAG with the ';
> 
> $patterns 
> = array(
> '/BOLD/i', 
> '/OLDTAG/i');
> $replacements 
> = array(
> '', 
> '');
> 
> echo preg_replace 
> ($patterns, $replacements, $text);
> ?>
> 
> Output:
> We want to replace > with the <>tag> and  with 
> the 
> 
> Look what happend with BOLD. 
> 
> Is there any solution to this besides any two-step sophisticated trick
> like case changing?
> Thanks!
> 
> --
> With best regards from Ukraine,
> Andre
> Http://oire.org/ - The Fantasy blogs of Oire
> Skype: Francophile; Wlm&MSN: arthaelon @ yandex.ru; Jabber: arthaelon @ 
> jabber.org
> Yahoo! messenger: andre.polykanine; ICQ: 191749952
> Twitter: http://twitter.com/m_elensule
> 
> 

Well, for the example you gave, why use regex?  Check this out as an example.

 and OLDTAG with the 
';

$regex = array(
'/BOLD/i',
'/OLDTAG/i',
);
$oldtags = array(
'BOLD',
'OLDTAG',
);
$replacements = array(
'',
'',
);

# Original String
echo $text."\n";

# After regex is applied
echo preg_replace($regex, $replacements, $text)."\n";

# After plain tag replacement happens
echo str_replace($oldtags, $replacements, $text)."\n";

?>

See if that works for you.

-- 
Jim Lucas

   "Some men are born to greatness, some achieve greatness,
   and some have greatness thrust upon them."

Twelfth Night, Act II, Scene V
by William Shakespeare

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



[PHP] preg_replace: avoiding double replacements

2010-05-17 Thread Andre Polykanine
Hello everyone,

Sorry for bothering you again.
Today I met a problem exactly described by a developer in users' notes
that follow the preg_replace description in the manual:
info at gratisrijden dot nl
02-Oct-2009 02:48 
if you are using the preg_replace with arrays, the replacements will apply as 
subject for the patterns later in the array. This means replaced values can
be replaced again.

Example:
 and OLDTAG with the ';

$patterns 
= array(
'/BOLD/i', 
'/OLDTAG/i');
$replacements 
= array(
'', 
'');

echo preg_replace 
($patterns, $replacements, $text);
?>

Output:
We want to replace > with the <>tag> and  with the 


Look what happend with BOLD. 

Is there any solution to this besides any two-step sophisticated trick
like case changing?
Thanks!

--
With best regards from Ukraine,
Andre
Http://oire.org/ - The Fantasy blogs of Oire
Skype: Francophile; Wlm&MSN: arthaelon @ yandex.ru; Jabber: arthaelon @ 
jabber.org
Yahoo! messenger: andre.polykanine; ICQ: 191749952
Twitter: http://twitter.com/m_elensule


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



Re: [PHP] preg_replace help

2010-01-26 Thread Michael A. Peters

Michael A. Peters wrote:

Kim Madsen wrote:

Michael A. Peters wrote on 26/01/2010 14:18:

$fixSrch[] = '/\n/';
$fixRplc[] = '[br]';

is what I need except I want it to leave anything between [code] and 
[/code] alone.


I figured it out before but with   but I don't 
even remember what I was working on when I did that and I can't for 
the life of me find it now.


Just use the function nl2br()

If you wanna match "\n", you need to add a backslash before the 
backslash: "\\n"




No, I do NOT want to use nl2br.
For one thing, nl2br isn't xml safe so I'd have to do another 
preg_replace to fix that. My bbcode parser is xml safe.


For another thing, my bbcode parser doesn't like html in its input, and 
this needs to be done before the parser.


'/\n/','[br]'

works exactly as I want it to right now except I do not want it replace 
the newlines inside [code][/code] as that messes up the syntax 
highlighting that is then done one the code block.




I got it, though it may not be the most elegant way.

I split the input up into array and do the preg_replace on array 
elements that are not inside [code]. Seems to work, and also solves the 
other problem (other problem being proper application of strip_tags 
except inside [code].


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



Re: [PHP] preg_replace help

2010-01-26 Thread Michael A. Peters

Kim Madsen wrote:

Michael A. Peters wrote on 26/01/2010 14:18:

$fixSrch[] = '/\n/';
$fixRplc[] = '[br]';

is what I need except I want it to leave anything between [code] and 
[/code] alone.


I figured it out before but with   but I don't even 
remember what I was working on when I did that and I can't for the 
life of me find it now.


Just use the function nl2br()

If you wanna match "\n", you need to add a backslash before the 
backslash: "\\n"




No, I do NOT want to use nl2br.
For one thing, nl2br isn't xml safe so I'd have to do another 
preg_replace to fix that. My bbcode parser is xml safe.


For another thing, my bbcode parser doesn't like html in its input, and 
this needs to be done before the parser.


'/\n/','[br]'

works exactly as I want it to right now except I do not want it replace 
the newlines inside [code][/code] as that messes up the syntax 
highlighting that is then done one the code block.


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



Re: [PHP] preg_replace help

2010-01-26 Thread Kim Madsen

Michael A. Peters wrote on 26/01/2010 14:18:

$fixSrch[] = '/\n/';
$fixRplc[] = '[br]';

is what I need except I want it to leave anything between [code] and 
[/code] alone.


I figured it out before but with   but I don't even 
remember what I was working on when I did that and I can't for the life 
of me find it now.


Just use the function nl2br()

If you wanna match "\n", you need to add a backslash before the 
backslash: "\\n"


--
Kind regards
Kim Emax - masterminds.dk

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



[PHP] preg_replace help

2010-01-26 Thread Michael A. Peters

$fixSrch[] = '/\n/';
$fixRplc[] = '[br]';

is what I need except I want it to leave anything between [code] and 
[/code] alone.


I figured it out before but with   but I don't even 
remember what I was working on when I did that and I can't for the life 
of me find it now.


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



Re: [PHP] preg_replace anything that isn't WORD

2009-08-24 Thread Jonathan Tapicer
For the record Shawn: I received your previous post from Aug 22 and I
think that it is the best solution.

Jonathan

On Tue, Aug 25, 2009 at 12:41 AM, Shawn McKenzie wrote:
> hack988 hack988 wrote:
>>  Use preg_replace_callback instead!
>> preg_replace_callback is better performance than preg_replace with /e.
>> -
>> code
>>
>> $str="cats i  saw a cat and a dog";
>> $str1=preg_replace_callback("/(dog|cat|.)/is","call_replace",$str);
>> echo $str."";
>> echo $str1;
>> function call_replace($match){
>>  if(in_array($match[0],array('cat','dog')))
>>   return $match[0];
>>  else
>>   return "";
>> }
>>
>> 2009/8/24 tedd :
 On Sat, Aug 22, 2009 at 12:32 PM, “•ÈýÏÝ“•ÂÔ
>> wrote:
>  Lets assume I have the string "cats i  saw a cat and a dog"
>  i want to strip everything except "cat" and "dog" so the result will be
>  "catcatdog",
>  using preg_replace.
>
>
>  I've tried something like /[^(dog|cat)]+/ but no success
>
  > What should I do?
>>> Lot's of ways to skin this cat/dog.
>>>
>>> What's wrong with exploding the string using spaces and then walking the
>>> array looking for cat and dog while assembling the resultant string?
>>>
>>> Cheers,
>>>
>>> tedd
>>>
>>>
>>> --
>>> ---
>>> http://sperling.com  http://ancientstones.com  http://earthstones.com
>>>
>>> --
>>> PHP General Mailing List (http://www.php.net/)
>>> To unsubscribe, visit: http://www.php.net/unsub.php
>>>
>>>
>>
> Certain posts of mine seem to get sucked into a black hole and I never
> see theme.  Maybe because I use this list as a newsgroup?  Anyway, what
> I posted before:
>
> Match everything but only replace the backreference for the words:
>
>
> $s = "cats i  saw a cat and a dog";
> $r = preg_replace('#.*?(cat|dog).*?#', '\1', $s);
>
> --
> Thanks!
> -Shawn
> http://www.spidean.com
>

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



Re: [PHP] preg_replace anything that isn't WORD

2009-08-24 Thread Shawn McKenzie
hack988 hack988 wrote:
>  Use preg_replace_callback instead!
> preg_replace_callback is better performance than preg_replace with /e.
> -
> code
> 
> $str="cats i  saw a cat and a dog";
> $str1=preg_replace_callback("/(dog|cat|.)/is","call_replace",$str);
> echo $str."";
> echo $str1;
> function call_replace($match){
>  if(in_array($match[0],array('cat','dog')))
>   return $match[0];
>  else
>   return "";
> }
> 
> 2009/8/24 tedd :
>>> On Sat, Aug 22, 2009 at 12:32 PM, “•ÈýÏÝ“•ÂÔ
> wrote:
  Lets assume I have the string "cats i  saw a cat and a dog"
  i want to strip everything except "cat" and "dog" so the result will be
  "catcatdog",
  using preg_replace.


  I've tried something like /[^(dog|cat)]+/ but no success

>>>  > What should I do?
>> Lot's of ways to skin this cat/dog.
>>
>> What's wrong with exploding the string using spaces and then walking the
>> array looking for cat and dog while assembling the resultant string?
>>
>> Cheers,
>>
>> tedd
>>
>>
>> --
>> ---
>> http://sperling.com  http://ancientstones.com  http://earthstones.com
>>
>> --
>> PHP General Mailing List (http://www.php.net/)
>> To unsubscribe, visit: http://www.php.net/unsub.php
>>
>>
> 
Certain posts of mine seem to get sucked into a black hole and I never
see theme.  Maybe because I use this list as a newsgroup?  Anyway, what
I posted before:

Match everything but only replace the backreference for the words:


$s = "cats i  saw a cat and a dog";
$r = preg_replace('#.*?(cat|dog).*?#', '\1', $s);

-- 
Thanks!
-Shawn
http://www.spidean.com

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



Re: [PHP] preg_replace anything that isn't WORD

2009-08-24 Thread hack988 hack988
 Use preg_replace_callback instead!
preg_replace_callback is better performance than preg_replace with /e.
-
code

$str="cats i  saw a cat and a dog";
$str1=preg_replace_callback("/(dog|cat|.)/is","call_replace",$str);
echo $str."";
echo $str1;
function call_replace($match){
 if(in_array($match[0],array('cat','dog')))
  return $match[0];
 else
  return "";
}

2009/8/24 tedd :
>> On Sat, Aug 22, 2009 at 12:32 PM, “•ÈýÏÝ“•ÂÔ
wrote:
>>>
>>>  Lets assume I have the string "cats i  saw a cat and a dog"
>>>  i want to strip everything except "cat" and "dog" so the result will be
>>>  "catcatdog",
>>>  using preg_replace.
>>>
>>>
>>>  I've tried something like /[^(dog|cat)]+/ but no success
>>>
>>  > What should I do?
>
> Lot's of ways to skin this cat/dog.
>
> What's wrong with exploding the string using spaces and then walking the
> array looking for cat and dog while assembling the resultant string?
>
> Cheers,
>
> tedd
>
>
> --
> ---
> http://sperling.com  http://ancientstones.com  http://earthstones.com
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>


Re: [PHP] preg_replace anything that isn't WORD

2009-08-24 Thread tedd

On Sat, Aug 22, 2009 at 12:32 PM, “•ÈýÏݓ•ÂÔ wrote:

 Lets assume I have the string "cats i  saw a cat and a dog"
 i want to strip everything except "cat" and "dog" so the result will be
 "catcatdog",
 using preg_replace.


 I've tried something like /[^(dog|cat)]+/ but no success


 > What should I do?


Lot's of ways to skin this cat/dog.

What's wrong with exploding the string using 
spaces and then walking the array looking for cat 
and dog while assembling the resultant string?


Cheers,

tedd


--
---
http://sperling.com  http://ancientstones.com  http://earthstones.com

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



Re: [PHP] preg_replace anything that isn't WORD

2009-08-22 Thread Jonathan Tapicer
Negating specific words with regexes isn't a good practice (see a deep
discussion here: http://www.perlmonks.org/?node_id=588315), in your
case I would resolve it like this:



That will output:

array(5) {
  [0]=>
  string(3) "cat"
  [1]=>
  string(10) "s i saw a "
  [2]=>
  string(3) "cat"
  [3]=>
  string(7) " and a "
  [4]=>
  string(3) "dog"
}

Then you just have to go through the result array of preg_split and
concatenate every "cat" and "dog".

Regards,

Jonathan

On Sat, Aug 22, 2009 at 12:32 PM, דניאל דנון wrote:
> Lets assume I have the string "cats i  saw a cat and a dog"
> i want to strip everything except "cat" and "dog" so the result will be
> "catcatdog",
> using preg_replace.
>
>
> I've tried something like /[^(dog|cat)]+/ but no success
>
> What should I do?
>
> --
> Use ROT26 for best security
>

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



[PHP] preg_replace anything that isn't WORD

2009-08-22 Thread דניאל דנון
Lets assume I have the string "cats i  saw a cat and a dog"
i want to strip everything except "cat" and "dog" so the result will be
"catcatdog",
using preg_replace.


I've tried something like /[^(dog|cat)]+/ but no success

What should I do?

-- 
Use ROT26 for best security


Re: [PHP] preg_replace with UTF-8

2009-07-06 Thread SleePy

Thank you Andrew,
That seems to break up UTF-8 strings. So from there I will play with it.

On Jul 6, 2009, at 8:50 AM, Andrew Ballard wrote:

On Sun, Jul 5, 2009 at 9:54 PM, SleePy  
wrote:
I seem to be having a minor issue with preg_replace not working as  
expected
when using UTF-8 strings. So far I have found out that \w doesn't  
seem to be

detecting UTF-8 strings.

This is my test php file:
';

$data = preg_replace('~([\w\.]{6})~u', '$1 < >', $data);
echo 'Data After: ', $data;

// UTF-8 Test
$data = 'ффф';
echo 'Data before: ', $data, '';

$data = preg_replace('~([\w\.]{6})~u', '$1 < >', $data);
echo 'Data After: ', $data;

?>


I would expect it to be:
Data before: ooo
Data After: oo < >oo < >oo < >o
---
Data before: ффф
Data After: фф <>фф <>фф<> ф

But what I get is:
Data before: ooo
Data After: oo < >oo < >oo < >o
---
Data before: ффф
Data After: ффф

Did I go about this the wrong way or is this a php bug itself?
I tested this in php 5.3, 5.2.9 and 6.0 (snapshot from a couple  
weeks ago)

and received the same results.


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




From the manual on PCRE syntax:
"A 'word' character is any letter or digit or the underscore
character, that is, any character which can be part of a Perl 'word'.
The definition of letters and digits is controlled by PCRE's character
tables, and may vary if locale-specific matching is taking place. For
example, in the 'fr' (French) locale, some character codes greater
than 128 are used for accented letters, and these are matched by \w.

These character type sequences can appear both inside and outside
character classes. They each match one character of the appropriate
type. If the current matching point is at the end of the subject
string, all of them fail, since there is no character to match."

I'm not sure if this is exactly what you want (or if it might let more
things slip past than you intend), but try this:

';

$data = preg_replace('~([\w\pL\.]{6})~u', '$1 < >', $data);
echo 'Data After: ', $data;

// UTF-8 Test
$data = 'ффф';
echo 'Data before: ', $data, '';

$data = preg_replace('~([\w\pL\.]{6})~u', '$1 < >', $data);
echo 'Data After: ', $data;

?>

Andrew



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



Re: [PHP] preg_replace with UTF-8

2009-07-06 Thread Andrew Ballard
On Sun, Jul 5, 2009 at 9:54 PM, SleePy wrote:
> I seem to be having a minor issue with preg_replace not working as expected
> when using UTF-8 strings. So far I have found out that \w doesn't seem to be
> detecting UTF-8 strings.
>
> This is my test php file:
>  $data = 'ooo';
> echo 'Data before: ', $data, '';
>
> $data = preg_replace('~([\w\.]{6})~u', '$1 < >', $data);
> echo 'Data After: ', $data;
>
> // UTF-8 Test
> $data = 'ффф';
> echo 'Data before: ', $data, '';
>
> $data = preg_replace('~([\w\.]{6})~u', '$1 < >', $data);
> echo 'Data After: ', $data;
>
> ?>
>
>
> I would expect it to be:
> Data before: ooo
> Data After: oo < >oo < >oo < >o
> ---
> Data before: ффф
> Data After: фф <>фф <>фф<> ф
>
> But what I get is:
> Data before: ooo
> Data After: oo < >oo < >oo < >o
> ---
> Data before: ффф
> Data After: ффф
>
> Did I go about this the wrong way or is this a php bug itself?
> I tested this in php 5.3, 5.2.9 and 6.0 (snapshot from a couple weeks ago)
> and received the same results.
>
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>

>From the manual on PCRE syntax:
"A 'word' character is any letter or digit or the underscore
character, that is, any character which can be part of a Perl 'word'.
The definition of letters and digits is controlled by PCRE's character
tables, and may vary if locale-specific matching is taking place. For
example, in the 'fr' (French) locale, some character codes greater
than 128 are used for accented letters, and these are matched by \w.

These character type sequences can appear both inside and outside
character classes. They each match one character of the appropriate
type. If the current matching point is at the end of the subject
string, all of them fail, since there is no character to match."

I'm not sure if this is exactly what you want (or if it might let more
things slip past than you intend), but try this:

';

$data = preg_replace('~([\w\pL\.]{6})~u', '$1 < >', $data);
echo 'Data After: ', $data;

// UTF-8 Test
$data = 'ффф';
echo 'Data before: ', $data, '';

$data = preg_replace('~([\w\pL\.]{6})~u', '$1 < >', $data);
echo 'Data After: ', $data;

?>

Andrew

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



Re: [PHP] preg_replace with UTF-8

2009-07-06 Thread Georgi Alexandrov
On Mon, Jul 6, 2009 at 4:54 AM, SleePy  wrote:

> I seem to be having a minor issue with preg_replace not working as expected
> when using UTF-8 strings. So far I have found out that \w doesn't seem to be
> detecting UTF-8 strings.
>
> This is my test php file:
>  $data = 'ooo';
> echo 'Data before: ', $data, '';
>
> $data = preg_replace('~([\w\.]{6})~u', '$1 < >', $data);
> echo 'Data After: ', $data;
>
> // UTF-8 Test
> $data = 'ффф';
> echo 'Data before: ', $data, '';
>
> $data = preg_replace('~([\w\.]{6})~u', '$1 < >', $data);
> echo 'Data After: ', $data;
>
> ?>
>
>
> I would expect it to be:
> Data before: ooo
> Data After: oo < >oo < >oo < >o
> ---
> Data before: ффф
> Data After: фф <>фф <>фф<> ф
>
> But what I get is:
> Data before: ooo
> Data After: oo < >oo < >oo < >o
> ---
> Data before: ффф
> Data After: ффф
>
> Did I go about this the wrong way or is this a php bug itself?
> I tested this in php 5.3, 5.2.9 and 6.0 (snapshot from a couple weeks ago)
> and received the same results.


Did you tried mb_ereg_replace?


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


[PHP] preg_replace with UTF-8

2009-07-05 Thread SleePy
I seem to be having a minor issue with preg_replace not working as  
expected when using UTF-8 strings. So far I have found out that \w  
doesn't seem to be detecting UTF-8 strings.


This is my test php file:
';

$data = preg_replace('~([\w\.]{6})~u', '$1 < >', $data);
echo 'Data After: ', $data;

// UTF-8 Test
$data = 'ффф';
echo 'Data before: ', $data, '';

$data = preg_replace('~([\w\.]{6})~u', '$1 < >', $data);
echo 'Data After: ', $data;

?>


I would expect it to be:
Data before: ooo
Data After: oo < >oo < >oo < >o
---
Data before: ффф
Data After: фф <>фф <>фф<> ф

But what I get is:
Data before: ooo
Data After: oo < >oo < >oo < >o
---
Data before: ффф
Data After: ффф

Did I go about this the wrong way or is this a php bug itself?
I tested this in php 5.3, 5.2.9 and 6.0 (snapshot from a couple weeks  
ago) and received the same results.



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



[PHP] preg_replace problem

2009-06-13 Thread Al
This preg_replace() should simply replace all "&" with "&" unless the value 
is already "&"


But; if $value is simple a quote character ["] I get ""e". e.g., "test" => 
"e;test"e;


Search string and replace works as it should in Regex_Coach.

echo $value.'';
$value=preg_replace("%&(?!amp;)%i", "&", $value);
echo $value;

I tried using \x26 for the "&" in the search string; didn't help.

This seems too obvious to be a bug. Using php5.2.9

Al...

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



Re: [PHP] preg_replace

2009-06-05 Thread Marc Steinert

Hey Ben,

to replace everything thats not alphanumeric, use the following statement:

$output = preg_replace('/[^[:alnum:]]/', '', $input);

Greetings from Germany

Marc

PS: Spaces are not alphanumeric ;)


Ben Miller wrote:

Oh yeah - not sure if spaces are considered alphanumeric or not, but I need
to keep spaces - replacing anything that is NOT a letter, a number or a
space.  Thanks again.

-Original Message-
From: Ben Miller [mailto:biprel...@gmail.com] 
Sent: Friday, June 05, 2009 2:09 AM

To: php-general@lists.php.net
Subject: [PHP] preg_replace

I bought PHP & MySQL for DUMMIES and it shows me how to use special 
characters for pattern matching and I've figured out the basics of using 
preg_replace to replace pattern matches.  What I am having trouble with, 
though, is figuring out how to replace anything that does not match the 
pattern.  For example, I want to replace anything that is NOT an 
alphanumeric character.  Any help would be appreciated.  Thanks.


Ben 






--
Synchronize and share your files over the web for free
http://bithub.net/

My Twitter feed
http://twitter.com/MarcSteinert





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



RE: [PHP] preg_replace

2009-06-05 Thread Ben Miller
Oh yeah - not sure if spaces are considered alphanumeric or not, but I need
to keep spaces - replacing anything that is NOT a letter, a number or a
space.  Thanks again.

-Original Message-
From: Ben Miller [mailto:biprel...@gmail.com] 
Sent: Friday, June 05, 2009 2:09 AM
To: php-general@lists.php.net
Subject: [PHP] preg_replace

I bought PHP & MySQL for DUMMIES and it shows me how to use special 
characters for pattern matching and I've figured out the basics of using 
preg_replace to replace pattern matches.  What I am having trouble with, 
though, is figuring out how to replace anything that does not match the 
pattern.  For example, I want to replace anything that is NOT an 
alphanumeric character.  Any help would be appreciated.  Thanks.

Ben 


-- 
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



[PHP] preg_replace

2009-06-05 Thread Ben Miller
I bought PHP & MySQL for DUMMIES and it shows me how to use special 
characters for pattern matching and I've figured out the basics of using 
preg_replace to replace pattern matches.  What I am having trouble with, 
though, is figuring out how to replace anything that does not match the 
pattern.  For example, I want to replace anything that is NOT an 
alphanumeric character.  Any help would be appreciated.  Thanks.


Ben 



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



Re: [PHP] preg_replace() question

2009-03-18 Thread Robert Cummings
On Wed, 2009-03-18 at 22:55 +0800, Virgilio Quilario wrote:
> > 1. What is the overhead on preg_replace?
> 
> it really depends on your operation. when you think it can be done
> using str* functions then go for it as they are much faster than preg*
> functions.
> 
> > 2. Is there a better way to strip spaces and non alpha numerical
> > characters from text strings? I suspect not... maybe the Shadow does ???
> 
> if those characters are in the middle, preg_replace is the right function.

Unless you know how many, it's probably the right function even if
they're at the front or end. preg_replace() is almost certainly faster
(in this particular case) than making two function calls.

Cheers,
Rob.
-- 
http://www.interjinn.com
Application and Templating Framework for PHP


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



Re: [PHP] preg_replace() question

2009-03-18 Thread Virgilio Quilario
> 1. What is the overhead on preg_replace?

it really depends on your operation. when you think it can be done
using str* functions then go for it as they are much faster than preg*
functions.

> 2. Is there a better way to strip spaces and non alpha numerical
> characters from text strings? I suspect not... maybe the Shadow does ???

if those characters are in the middle, preg_replace is the right function.


virgil
http://www.jampmark.com

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



Re: [PHP] preg_replace() question

2009-03-18 Thread Richard Heyes
> 1. What is the overhead on preg_replace?

Minimal. If you're looking for all the speed you can get, you'd
probably be better off with an str* function though if you can find
one. You'd have to be seriously after speed gains though.

> 2. Is there a better way to strip spaces and non alpha numerical
> characters from text strings? I suspect not...

Have a look through the string functions. the ctype_* functions too.
See if one fits your needs.

-- 
Richard Heyes

HTML5 Canvas graphing for Firefox, Chrome, Opera and Safari:
http://www.rgraph.net (Updated March 14th)

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



Re: [PHP] preg_replace() question

2009-03-17 Thread Chris

PJ wrote:

1. What is the overhead on preg_replace?


Compared to what? If you write a 3 line regex, it's going to take some 
processing.



2. Is there a better way to strip spaces and non alpha numerical
characters from text strings? I suspect not... maybe the Shadow does ???


For this, preg_replace is probably the right option.

--
Postgresql & php tutorials
http://www.designmagick.com/


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



[PHP] preg_replace() question

2009-03-17 Thread PJ
1. What is the overhead on preg_replace?
2. Is there a better way to strip spaces and non alpha numerical
characters from text strings? I suspect not... maybe the Shadow does ???
:-D

-- 
unheralded genius: "A clean desk is the sign of a dull mind. "
-
Phil Jourdan --- p...@ptahhotep.com
   http://www.ptahhotep.com
   http://www.chiccantine.com/andypantry.php


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



Re: [PHP] preg_replace strange behaviour, duplicates

2008-08-20 Thread Micah Gersten
You know what's not supposed to be next in the  second string, and
that's the word Duo.

Thank you  
Micah Gersten
onShore Networks
Internal Developer
http://www.onshore.com



Adz07 wrote:
> Problem is that a negative assertion assumes i know what is going to come
> after the match, but i don't. I am a bit stuck now :(
>
>
> Adz07 wrote:
>   
>> I am trying to nail down a bit of code for changing processor names
>> depending on matches.
>> Problem i am having is the replacement takes place then it seems to do it
>> again replacing the text just replaced as there are similar matches
>> afterwards. example (easier)
>>
>> $string = "The new Intel Core 2 Duo T8300";
>>
>> $patterns = array("/Intel Core 2 Duo/","/Intel Core 2/");
>>
>> $replacements = array("Intel Core 2 Duo Processor Technology","Intel Core
>> 2 Processor Technology");
>>
>> I would expect to get the following:
>>
>> The new Intel Core 2 Duo Processor Technology T8300
>>
>> but i get 
>>
>> The new Intel Core 2 Processor Technology Duo Processor Technology T8300
>>
>> I can see why its doing it, reading the string in and making the
>> replacement but then reading the string in for the next pattern, but i
>> don't want it to do this. How do i stop preg_replace from reading in the
>> same part of the string that has been replaced already?
>>
>> (it's a bad day! :( )
>>
>> 
>
>   

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



RE: [PHP] preg_replace strange behaviour, duplicates

2008-08-18 Thread Simcha Younger


 

 

Simcha Younger

 

-Original Message-

From: Adz07 [mailto:[EMAIL PROTECTED]

Sent: Monday, August 18, 2008 10:17 AM

To: php-general@lists.php.net

Subject: Re: [PHP] preg_replace strange behaviour, duplicates

 

 

Problem is that a negative assertion assumes i know what is going to come

after the match, but i don't. I am a bit stuck now :(

 

 

Adz07 wrote:

> 

> I am trying to nail down a bit of code for changing processor names

> depending on matches.

> Problem i am having is the replacement takes place then it seems to do it

> again replacing the text just replaced as there are similar matches

> afterwards. example (easier)

> 

> $string = "The new Intel Core 2 Duo T8300";

> 

> $patterns = array("/Intel Core 2 Duo/","/Intel Core 2/");

> 

> $replacements = array("Intel Core 2 Duo Processor Technology","Intel Core

> 2 Processor Technology");

> 

> I would expect to get the following:

> 

> The new Intel Core 2 Duo Processor Technology T8300

> 

> but i get 

> 

> The new Intel Core 2 Processor Technology Duo Processor Technology T8300

> 

> I can see why its doing it, reading the string in and making the

> replacement but then reading the string in for the next pattern, but i

> don't want it to do this. How do i stop preg_replace from reading in the

> same part of the string that has been replaced already?

> 

> (it's a bad day! :( )

> 

 

-- 

View this message in context:
http://www.nabble.com/preg_replace-strange-behaviour%2C-duplicates-tp1900116
6p19027490.html

Sent from the PHP - General mailing list archive at Nabble.com.

 

 

-- 

PHP General Mailing List (http://www.php.net/)

To unsubscribe, visit: http://www.php.net/unsub.php

 

No virus found in this incoming message.

Checked by AVG - http://www.avg.com <http://www.avg.com/>  

Version: 8.0.138 / Virus Database: 270.6.4/1617 - Release Date: 17/08/2008
12:58

 

 



Re: [PHP] preg_replace strange behaviour, duplicates

2008-08-18 Thread Adz07

Problem is that a negative assertion assumes i know what is going to come
after the match, but i don't. I am a bit stuck now :(


Adz07 wrote:
> 
> I am trying to nail down a bit of code for changing processor names
> depending on matches.
> Problem i am having is the replacement takes place then it seems to do it
> again replacing the text just replaced as there are similar matches
> afterwards. example (easier)
> 
> $string = "The new Intel Core 2 Duo T8300";
> 
> $patterns = array("/Intel Core 2 Duo/","/Intel Core 2/");
> 
> $replacements = array("Intel Core 2 Duo Processor Technology","Intel Core
> 2 Processor Technology");
> 
> I would expect to get the following:
> 
> The new Intel Core 2 Duo Processor Technology T8300
> 
> but i get 
> 
> The new Intel Core 2 Processor Technology Duo Processor Technology T8300
> 
> I can see why its doing it, reading the string in and making the
> replacement but then reading the string in for the next pattern, but i
> don't want it to do this. How do i stop preg_replace from reading in the
> same part of the string that has been replaced already?
> 
> (it's a bad day! :( )
> 

-- 
View this message in context: 
http://www.nabble.com/preg_replace-strange-behaviour%2C-duplicates-tp19001166p19027490.html
Sent from the PHP - General mailing list archive at Nabble.com.


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



Re: [PHP] preg_replace strange behaviour, duplicates

2008-08-15 Thread Micah Gersten
Take a look at the negative assertions on this page:
http://us2.php.net/manual/en/regexp.reference.php

Thank you,
Micah Gersten
onShore Networks
Internal Developer
http://www.onshore.com



Adz07 wrote:
> I am trying to nail down a bit of code for changing processor names depending
> on matches.
> Problem i am having is the replacement takes place then it seems to do it
> again replacing the text just replaced as there are similar matches
> afterwards. example (easier)
>
> $string = "The new Intel Core 2 Duo T8300";
>
> $patterns = array("/Intel Core 2 Duo/","/Intel Core 2/");
>
> $replacements = array("/Intel Core 2 Duo Processor Technology/","/Intel Core
> 2 Processor Technology/");
>
> I would expect to get the following:
>
> The new Intel Core 2 Duo Processor Technology T8300
>
> but i get 
>
> The new Intel Core 2 Processor Technology Duo Processor Technology T8300
>
> I can see why its doing it, reading the string in and making the replacement
> but then reading the string in for the next pattern, but i don't want it to
> do this. How do i stop preg_replace from reading in the same part of the
> string that has been replaced already?
>
> (it's a bad day! :( )
>   

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



[PHP] preg_replace strange behaviour, duplicates

2008-08-15 Thread Adz07

I am trying to nail down a bit of code for changing processor names depending
on matches.
Problem i am having is the replacement takes place then it seems to do it
again replacing the text just replaced as there are similar matches
afterwards. example (easier)

$string = "The new Intel Core 2 Duo T8300";

$patterns = array("/Intel Core 2 Duo/","/Intel Core 2/");

$replacements = array("/Intel Core 2 Duo Processor Technology/","/Intel Core
2 Processor Technology/");

I would expect to get the following:

The new Intel Core 2 Duo Processor Technology T8300

but i get 

The new Intel Core 2 Processor Technology Duo Processor Technology T8300

I can see why its doing it, reading the string in and making the replacement
but then reading the string in for the next pattern, but i don't want it to
do this. How do i stop preg_replace from reading in the same part of the
string that has been replaced already?

(it's a bad day! :( )
-- 
View this message in context: 
http://www.nabble.com/preg_replace-strange-behaviour%2C-duplicates-tp19001166p19001166.html
Sent from the PHP - General mailing list archive at Nabble.com.


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



Re: [PHP] Preg_Replace $pattern syntax error

2008-06-10 Thread Daniel Brown
On Mon, Jun 9, 2008 at 8:07 PM, Graham Anderson <[EMAIL PROTECTED]> wrote:
> Hi
>
> How can I convert the regular expression:
>  (.*?)
> into a pattern that PHP will accept?
[snip!]

Change this:
$pattern='(.*?)';

To this:
$pattern='/(.*?)<\/p>/Uis';

This adds the delimiters (/) to the beginning and end of the
string, and escapes the slash in the  so it doesn't kick-out
early, leaving trailing characters.  After the ending delimiter, it
tells preg_replace() to be "Ungreedy", "CASE-iNSENSITIVE", and to feel
free to cross over newline boundaries (with the 's' modifier).

From there, you can modify your regexp as needed.

One of the absolute best resources for regexp's on the 'Net today,
in my opinion, is here:

http://www.regular-expressions.info/

It's even good for those of us who forget things years later ;-P

-- 

Dedicated Servers - Intel 2.4GHz w/2TB bandwidth/mo. starting at just
$59.99/mo. with no contract!
Dedicated servers, VPS, and hosting from $2.50/mo.

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



[PHP] Preg_Replace $pattern syntax error [solved]

2008-06-09 Thread Graham Anderson

I needed to add the ~ character as a delimiter. So, the below now works
$pattern='~(.*?)~';

G


Hi

How can I convert the regular expression:left:\s+(\d+)px;">(.*?)

into a pattern that PHP will accept?

I am getting the error:
Warning: preg_replace() [function.preg-replace]: Unknown modifier  
'(' in /Library/WebServer/Documents/tamagotchi/runtime/content/js/ 
tiny_mce/examples/tinymce_regex.php on line 24


I am very new to regular expressions and any help is appreciated.  
Something to do with escaping certain strings?

G


$html =<Firefox 

May the Regular Expression Find Me!
EOB;

$pattern='(.*?)';
$replace= '\\2';
echo preg_replace($pattern,$replace, $html );




[PHP] Preg_Replace $pattern syntax error

2008-06-09 Thread Graham Anderson

Hi

How can I convert the regular expression:\s+(\d+)px;">(.*?)

into a pattern that PHP will accept?

I am getting the error:
Warning: preg_replace() [function.preg-replace]: Unknown modifier '('  
in /Library/WebServer/Documents/tamagotchi/runtime/content/js/tiny_mce/ 
examples/tinymce_regex.php on line 24


I am very new to regular expressions and any help is appreciated.  
Something to do with escaping certain strings?

G


$html =<Firefox 

May the Regular Expression Find Me!
EOB;

$pattern='(.*?)';
$replace= '\\2';
echo preg_replace($pattern,$replace, $html );



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



Re: [PHP] preg_replace Question

2008-04-04 Thread Per Jessen
Richard Luckhurst wrote:

> e.g $amount = $524.00 however only 4.00 is displayed in the %Amount
> field on the html page. I tried dropping the .00 from $amount to see
> if this might be a length issue and then %Amount was just 4
> Am I doing something obviously wrong here? I have checked the php
> manual and I appear to be using preg_replace correctly.

>From the manual: 

"replacement  may contain references of the form \\n or (since PHP
4.0.4) $n, with the latter form being the preferred one"

If you use $amount ='\$524.00' instead of '$524.00', it'll work. 


/Per Jessen, Zürich


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



[PHP] preg_replace Question

2008-04-03 Thread Richard Luckhurst
Hi List

I am trying to perform a number of replacements of place holders in an html page
I am working on using preg_replace. I am stuck with a pronlem I can not work out
and would appreciate some help.

The code I have is as follows

$html = preg_replace('/%Amount/',$amount,$html);

$html is the source of a html page
$amount is set earlier to a value read from a file

When I view the html page the value of %Amount is not what I would expect.

e.g $amount = $524.00 however only 4.00 is displayed in the %Amount field on the
html page. I tried dropping the .00 from $amount to see if this might be a
length issue and then %Amount was just 4

Am I doing something obviously wrong here? I have checked the php manual and I
appear to be using preg_replace correctly.


Regards,
Richard Luckhurst  
Product Development
Exodus Systems - Sydney, Australia.
[EMAIL PROTECTED]
Tel: (+612) 4751-9633
Fax: (+612) 4751-9644
Web: www.resmaster.com 
=
Exodus Systems - Smarter Systems, Better Business
=


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



Re: [PHP] Re: PHP "preg_replace" help

2007-09-18 Thread Arpad Ray
Apologies if you already received this message, I tried to send it 
earlier from my webmail but it doesn't seem to have worked.


Al wrote:
Just use stripslashes() on your submitted data and forget about 
testing for magic_quotes.  It's good practice anyhow.  \" is not legit 
text regardless.




Using stripslashes() on all submitted data is most certainly *not* good 
practice. If magic_quotes_gpc is later turned off or you're using one of 
the versions of PHP with buggy magic_quotes_gpc support then you can 
easily lose data. Reversing the effects of magic_quotes_gpc is far from 
trivial, there's lots of potential for subtle bugs, let alone completely 
forgetting about $_COOKIE.


See my earlier reply for a real solution.

Arpad

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



[PHP] Re: PHP "preg_replace" help

2007-09-18 Thread Al
Just use stripslashes() on your submitted data and forget about testing for 
magic_quotes.  It's good practice anyhow.  \" is not legit text regardless.




haim Chaikin wrote:

Hello,

 


I am a beginner in PHP. I need help with the function preg_replace.

I am trying to remove the backslashes ( \ ) from a string that is submitted
by the user.

It is submitted in a form but it adds \ before the quotation marks ( " ).

Will this change if I use the GET method instead of POST.

If not can you please tell me how to use preg_replace to remove the
backslashes.

 


Thank You,

Chaim Chaikin

Novice PHP programmer

Hotwire Band Website Administrator

http://hotwire.totalh.com




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



Re: [PHP] PHP "preg_replace" help

2007-09-17 Thread Arpad Ray

Jim Lucas wrote:

Here is a nice little hack that I use.



"Little hack" it is, "nice" it isn't.
Ideally just turn off magic_quotes_gpc - you can do so in php.ini, or 
perhaps your web server configuration files (httpd.conf, .htaccess etc.).


If you don't have access to any of the above then install the latest 
version of PHP_Compat (http://pear.php.net/package/PHP_Compat) and 
include 'PHP/Compat/Environment/magic_quotes_gpc_off.php'. Reversing the 
effects of magic_quotes_gpc at runtime is far from trivial, there's lots 
of potential for subtle bugs, let alone completely forgetting about 
$_COOKIE.


If you're unable to install PHP_Compat, you can grab the relevant files 
from CVS:

http://cvs.php.net/viewvc.cgi/pear/PHP_Compat/Compat/Environment/_magic_quotes_inputs.php?revision=1.3&view=markup
http://cvs.php.net/viewvc.cgi/pear/PHP_Compat/Compat/Environment/magic_quotes_gpc_off.php?revision=1.7&view=markup

Arpad

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



[PHP] PHP "preg_replace" help

2007-09-17 Thread Chaim Chaikin
Hello,

 

I am a beginner in PHP. I need help with the function preg_replace.

I am trying to remove the backslashes ( \ ) from a string that is submitted
by the user.

It is submitted in a form but it adds \ before the quotation marks ( " ).

Will this change if I use the GET method instead of POST.

If not can you please tell me how to use preg_replace to remove the
backslashes.

 

Thank You,

Chaim Chaikin

Novice PHP programmer

Hotwire Band Website Administrator

http://hotwire.totalh.com



Re: [PHP] PHP "preg_replace" help

2007-09-17 Thread Jim Lucas

Chaim Chaikin wrote:

Hello,

 


I am a beginner in PHP. I need help with the function preg_replace.

I am trying to remove the backslashes ( \ ) from a string that is submitted
by the user.

It is submitted in a form but it adds \ before the quotation marks ( " ).

Will this change if I use the GET method instead of POST.

If not can you please tell me how to use preg_replace to remove the
backslashes.


Don't, use stripslashes() instead.

http://us.php.net/stripslashes

Here is a nice little hack that I use.



you should see the difference
--
Jim Lucas

   "Some men are born to greatness, some achieve greatness,
   and some have greatness thrust upon them."

Twelfth Night, Act II, Scene V
by William Shakespeare

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



Re: [PHP] preg_replace() help

2007-07-14 Thread Richard Heyes

What am I doing wrong?


Using regular expressions when you don't need to:

$txt = str_replace(' ', ' ', substr($txt, strpos($txt, --)));

Might be a few typos in there. And I may have mixed up the args.

--
Richard Heyes
+44 (0)844 801 1072
http://www.websupportsolutions.co.uk

Knowledge Base and HelpDesk software
that can cut the cost of online support

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



Re: [PHP] preg_replace() help

2007-07-13 Thread Richard Lynch
On Fri, July 13, 2007 3:52 pm, Rick Pasotto wrote:
> I have quotes like the following:
>
> $txt = 'A promise is a debt. -- Irish Proverb';
>
> I'd like to replace all the spaces afer the '--' with  
>
> This is what I've tried:
>
>   $pat = '/( --.*)(\s|\n)/U';

You might want to use \\s and \\n, so you are 100% clear that the PHP
strings have a single \ in them, and that they don't have a newline.

The .* is probably messing you up...

You could probably manage this with some kind of
preg_replace_callback, but it seems to me it would be easier to do:

$txt = 'A promise is a debt. -- Irish Proverb';
$pos = strpos($txt, '--');
$html = substr($txt, 0, $pos) . '--' . str_replace(' ', ' ',
substr($txt, $pos + 2));

-- 
Some people have a "gift" link here.
Know what I want?
I want you to buy a CD from some indie artist.
http://cdbaby.com/browse/from/lynch
Yeah, I get a buck. So?

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



Re: [PHP] preg_replace() help

2007-07-13 Thread Jim Lucas

Rick Pasotto wrote:

I have quotes like the following:

$txt = 'A promise is a debt. -- Irish Proverb';

I'd like to replace all the spaces afer the '--' with  

This is what I've tried:

$pat = '/( --.*)(\s|\n)/U';
$rpl = '$1$2 ';
while (preg_match($pat,$txt,$matches) > 0) {
print "$txt\n";
printf("[0]: <%s>\n",$matches[0]);
printf("[1]: <%s>\n",$matches[1]);
printf("[2]: <%s>\n",$matches[2]);
preg_replace($pat,$rpl,$txt);
}

The prints are for debugging. $matches contains what I expect but
nothing gets replaced and $txt stays the same so it loops forever.

What am I doing wrong?


What is your goal for this?

--
Jim Lucas

   "Some men are born to greatness, some achieve greatness,
   and some have greatness thrust upon them."

Twelfth Night, Act II, Scene V
by William Shakespeare

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



Re: [PHP] preg_replace() help

2007-07-13 Thread Daniel Brown

On 7/13/07, Rick Pasotto <[EMAIL PROTECTED]> wrote:

I have quotes like the following:

$txt = 'A promise is a debt. -- Irish Proverb';

I'd like to replace all the spaces afer the '--' with  

This is what I've tried:

$pat = '/( --.*)(\s|\n)/U';
$rpl = '$1$2 ';
while (preg_match($pat,$txt,$matches) > 0) {
print "$txt\n";
printf("[0]: <%s>\n",$matches[0]);
printf("[1]: <%s>\n",$matches[1]);
printf("[2]: <%s>\n",$matches[2]);
preg_replace($pat,$rpl,$txt);
}

The prints are for debugging. $matches contains what I expect but
nothing gets replaced and $txt stays the same so it loops forever.

What am I doing wrong?

--
"Everyone is as God has made him, and oftentimes a great deal worse."
-- Miguel De Cervantes
Rick Pasotto[EMAIL PROTECTED]http://www.niof.net

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




   If you mean that EVERY space after the -- separator should be
replaced, then just try this:



   This would print:
   A promise is a debt. -- Irish Proverb

   Conversely, it will still properly handle the existence of
double-hyphens anywhere else in the quote, but not the source.
Consider this string:
   "As a rule, kids with meningitis don't smile when looking at
attractive faces -- not even you, Miss America, or the ravishing
pharmacist I mentioned above. -- ER Questions and Answers, Part 3"

   This would still become:
   "As a rule, kids with meningitis don't smile when looking at
attractive faces -- not even you, Miss America, or the ravishing
pharmacist I mentioned above.
-- ER Questions and Answers, Part 3"

   However, if you have double-hyphens in the source, like so:
   "What a pain in the butt this would be! -- Me, sending an
example -- to you

   The phrase would be printed like this:
   "What a pain in the butt this would be! -- Me, sending an
example -- to you

--
Daniel P. Brown
[office] (570-) 587-7080 Ext. 272
[mobile] (570-) 766-8107

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



Re: [PHP] preg_replace() help

2007-07-13 Thread Jim Lucas

Rick Pasotto wrote:

I have quotes like the following:

$txt = 'A promise is a debt. -- Irish Proverb';

I'd like to replace all the spaces afer the '--' with  

This is what I've tried:

$pat = '/( --.*)(\s|\n)/U';
$rpl = '$1$2 ';
while (preg_match($pat,$txt,$matches) > 0) {
print "$txt\n";
printf("[0]: <%s>\n",$matches[0]);
printf("[1]: <%s>\n",$matches[1]);
printf("[2]: <%s>\n",$matches[2]);
preg_replace($pat,$rpl,$txt);
}

The prints are for debugging. $matches contains what I expect but
nothing gets replaced and $txt stays the same so it loops forever.

What am I doing wrong?



Maybe this



--
Jim Lucas

   "Some men are born to greatness, some achieve greatness,
   and some have greatness thrust upon them."

Twelfth Night, Act II, Scene V
by William Shakespeare

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



[PHP] preg_replace() help

2007-07-13 Thread Rick Pasotto
I have quotes like the following:

$txt = 'A promise is a debt. -- Irish Proverb';

I'd like to replace all the spaces afer the '--' with  

This is what I've tried:

$pat = '/( --.*)(\s|\n)/U';
$rpl = '$1$2 ';
while (preg_match($pat,$txt,$matches) > 0) {
print "$txt\n";
printf("[0]: <%s>\n",$matches[0]);
printf("[1]: <%s>\n",$matches[1]);
printf("[2]: <%s>\n",$matches[2]);
preg_replace($pat,$rpl,$txt);
}

The prints are for debugging. $matches contains what I expect but
nothing gets replaced and $txt stays the same so it loops forever.

What am I doing wrong?

-- 
"Everyone is as God has made him, and oftentimes a great deal worse."
-- Miguel De Cervantes
Rick Pasotto[EMAIL PROTECTED]http://www.niof.net

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



Re: [PHP] preg_replace and regular expressions.

2007-04-16 Thread Richard Lynch
http://php.net/preg_replace_all

And be sure to use Ungreedy flag to your pattern:
/pattern/U

On Sat, April 14, 2007 11:22 pm, Travis Moore wrote:
> Okay, so what I have is a BB code type of thing for a CMS, which I for
> obvious reasons can't allow HTML.
>
> Here's the snippet of my function:
>
> 
> function bbCode($str)
>   {
>$db = new _Mysql;
>$strOld = $str;
>$strNew = $str;
>$getRegexs = $db->query("SELECT `regex`,`replace`,`search` FROM
> `_bb_codes`");
>while ($getRegex = mysql_fetch_assoc($getRegexs))
> {
>  $search = base64_decode($getRegex['search']);
>  $regex = base64_decode($getRegex['regex']);
>  $replace = base64_decode($getRegex['replace']);
>  if (preg_match($search,$strNew) == 1)
>   {
>for ($i = 1; $i < 20; $i++)
> {
>  $strNew = $strOld;
>   $strNew = preg_replace($regex,$replace,$strNew);
>  if ($strNew == $strOld)
>   {
>break;
>   }
>  else
>   {
>$strOld = $strNew;
>   }
> }
>   }
> }
>$return = $strNew;
>return $return;
>   }
> **
>
> But, for something like this:
>
> [quote][quote]Quote #2[/quote]Quote #1[/quote]No quote.
>
> I'll get:
>
> 
> [quote]Quote #2[/quote]Quote #1
> No quote.
>
> Despite being in the loop.
>
> Regex is: /\[quote\]((.*|\n)*)\[\/quote\]/
> Replace is: $1
>
> Both are stored base64 encoded in a database.
>
> Any help / suggestions much appreciated.
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>


-- 
Some people have a "gift" link here.
Know what I want?
I want you to buy a CD from some indie artist.
http://cdbaby.com/browse/from/lynch
Yeah, I get a buck. So?

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



RE: [PHP] preg_replace and regular expressions.

2007-04-15 Thread Buesching, Logan J
In your regex, you have a greedy matcher, i.e. ".*" will match as much
as it can to satisfy its condition.  I believe you can do ".*?" and it
will work, as ".*?" will match as little as it can to be satisfied.

-Logan

-Original Message-
From: Travis Moore [mailto:[EMAIL PROTECTED] 
Sent: Sunday, April 15, 2007 12:22 AM
To: [EMAIL PROTECTED]
Subject: [PHP] preg_replace and regular expressions.

Okay, so what I have is a BB code type of thing for a CMS, which I for 
obvious reasons can't allow HTML.

Here's the snippet of my function:


function bbCode($str)
  {
   $db = new _Mysql;
   $strOld = $str;
   $strNew = $str;
   $getRegexs = $db->query("SELECT `regex`,`replace`,`search` FROM 
`_bb_codes`");
   while ($getRegex = mysql_fetch_assoc($getRegexs))
{
 $search = base64_decode($getRegex['search']);
 $regex = base64_decode($getRegex['regex']);
 $replace = base64_decode($getRegex['replace']);
 if (preg_match($search,$strNew) == 1)
  {
   for ($i = 1; $i < 20; $i++)
{
 $strNew = $strOld;
$strNew = preg_replace($regex,$replace,$strNew);
 if ($strNew == $strOld)
  {
   break;
  }
 else
  {
   $strOld = $strNew;
  }
}
  }
}
   $return = $strNew;
   return $return;
  }
**

But, for something like this:

[quote][quote]Quote #2[/quote]Quote #1[/quote]No quote.

I'll get:


[quote]Quote #2[/quote]Quote #1
No quote.

Despite being in the loop.

Regex is: /\[quote\]((.*|\n)*)\[\/quote\]/
Replace is: $1

Both are stored base64 encoded in a database.

Any help / suggestions much appreciated.

-- 
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



[PHP] preg_replace and regular expressions.

2007-04-14 Thread Travis Moore
Okay, so what I have is a BB code type of thing for a CMS, which I for 
obvious reasons can't allow HTML.


Here's the snippet of my function:


function bbCode($str)
 {
  $db = new _Mysql;
  $strOld = $str;
  $strNew = $str;
  $getRegexs = $db->query("SELECT `regex`,`replace`,`search` FROM 
`_bb_codes`");

  while ($getRegex = mysql_fetch_assoc($getRegexs))
   {
$search = base64_decode($getRegex['search']);
$regex = base64_decode($getRegex['regex']);
$replace = base64_decode($getRegex['replace']);
if (preg_match($search,$strNew) == 1)
 {
  for ($i = 1; $i < 20; $i++)
   {
$strNew = $strOld;
$strNew = preg_replace($regex,$replace,$strNew);
if ($strNew == $strOld)
 {
  break;
 }
else
 {
  $strOld = $strNew;
 }
   }
 }
   }
  $return = $strNew;
  return $return;
 }
**

But, for something like this:

[quote][quote]Quote #2[/quote]Quote #1[/quote]No quote.

I'll get:


[quote]Quote #2[/quote]Quote #1
No quote.

Despite being in the loop.

Regex is: /\[quote\]((.*|\n)*)\[\/quote\]/
Replace is: $1

Both are stored base64 encoded in a database.

Any help / suggestions much appreciated.

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



Re: [PHP] preg_replace();

2007-02-02 Thread Richard Lynch
On Fri, February 2, 2007 12:30 pm, Sébastien WENSKE wrote:
> I want replace the "|" (pipe) and the " " (space) chars where are
> between " (double-quotes)  by an underscore "_" with the
> preg_replace(); funtction.
>
> Can someone help me to find the correct regex.

You can even go so far so to do both at once:
$text = str_replace(array('|', ' '), array('_', '_'), $text);

This does ignore the initial requirement of only replacing the ones
between quotes, however...

Something like this will honor the quotes restriction:
$text = preg_replace_all('/(".*)[| ](.*")/", '\\1_\\2', $text);

I probably got the PCRE wrong, but it's close.

Download The Regex Coach and play with it. :-)

-- 
Some people have a "gift" link here.
Know what I want?
I want you to buy a CD from some starving artist.
http://cdbaby.com/browse/from/lynch
Yeah, I get a buck. So?

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



Re: [PHP] preg_replace();

2007-02-02 Thread Steffen Ebermann
On Fri, Feb 02, 2007 at 09:01:38PM +0100, Steffen Ebermann wrote:
>
> $new = preg_replace("!\|| !", "_", $old);

Heyha, the mail's subject gone obsolete. preg_replace isn't
necessary at all.

Better use: $new = str_replace(array ("|"," "), "_", $old);

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



Re: [PHP] preg_replace(); [solved]

2007-02-02 Thread Steffen Ebermann
Maybe you just mistyped that, but this would *probably* also match on s=""
or bar="", cause [ and ] are metacharacters.

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



Re: [PHP] preg_replace(); [solved]

2007-02-02 Thread Sébastien WENSKE

nice !

thanks Steffen & Ed !

i've just add  '[src|background] *= *' to make sure that the replacement 
takes effect only in THML tag's attributes


if (preg_match_all("![src|background] *= *\"(.+)\"!sU", $htmlContent, 
$match))

{
 for ($i=0; $i- Original Message - 
From: "Steffen Ebermann" <[EMAIL PROTECTED]>

To: 
Cc: "Sébastien WENSKE" <[EMAIL PROTECTED]>
Sent: Friday, February 02, 2007 9:01 PM
Subject: Re: [PHP] preg_replace();



This always works for me:

if (preg_match_all("!\"(.+)\"!sU", $var, $match))
{
 for ($i=0; $i
Hi all,

I want replace the "|" (pipe) and the " " (space) chars where are between 
" (double-quotes)  by an underscore "_" with the preg_replace(); 
funtction.


Can someone help me to find the correct regex.

Thanks in advance

Seb




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



Re: [PHP] preg_replace();

2007-02-02 Thread Steffen Ebermann
This always works for me:

if (preg_match_all("!\"(.+)\"!sU", $var, $match))
{
  for ($i=0; $i Hi all,
> 
> I want replace the "|" (pipe) and the " " (space) chars where are between " 
> (double-quotes)  by an underscore "_" with the preg_replace(); funtction.
> 
> Can someone help me to find the correct regex.
> 
> Thanks in advance
> 
> Seb

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



Re[4]: [PHP] preg_replace();

2007-02-02 Thread wwww
Try this one:

$old_string="lazy \"some chars|some chars\" dog";
$new_string=str_replace('|', '_', $old_string);
print $new_string;

Ed

Friday, February 2, 2007, 10:39:59 PM, you wrote:

> ok, but :

> $old_string="lazy \"some chars|some chars\" dog";
> $new_string=str_replace('"|"', '_', $old_string);

> don't work

> sorry for my bad english, i'm french.

> - Original Message - 
> From: <[EMAIL PROTECTED]>
> To: "Sébastien WENSKE" <[EMAIL PROTECTED]>
> Sent: Friday, February 02, 2007 9:22 PM
> Subject: Re[2]: [PHP] preg_replace();


> I have tasted the code and it worked fine (if I got you right):

> $old_string="lazy \"|\" dog";
> $new_string=str_replace('"|"', '_', $old_string);
> print $new_string;

> I got "lazy_dog"

> Ed

> Friday, February 2, 2007, 10:01:14 PM, you wrote:

>> Thanks,

>> but I think that I must use preg_replace because the condition is: replace
>> the chars (pipe or space) when they are between "

>> ie :  src=file:///h|/hjcjdgh dlkgj/dgjk.jpg"  to
>> src=file:///h_/hjcjdgh_dlkgj/dgjk.jpg"

>> Seb





>> - Original Message - 
>> From: <[EMAIL PROTECTED]>
>> To: "Sébastien WENSKE" <[EMAIL PROTECTED]>
>> Cc: 
>> Sent: Friday, February 02, 2007 8:38 PM
>> Subject: Re: [PHP] preg_replace();


>> I am not a very experienced programmer, but I think that "str_replace"
>> can be used in this case:
>> $new_string=str_replace('|', '_', $old_string)

>> then use the same function to replace spaces.

>> Ed

>> Friday, February 2, 2007, 9:30:37 PM, you wrote:

>>> Hi all,

>>> I want replace the "|" (pipe) and the " " (space) chars where are
>>> between " (double-quotes)  by an underscore "_" with the
>>> preg_replace(); funtction.

>>> Can someone help me to find the correct regex.

>>> Thanks in advance

>>> Seb

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



Re[2]: [PHP] preg_replace();

2007-02-02 Thread wwww
I have tasted the code and it worked fine (if I got you right):

$old_string="lazy \"|\" dog";
$new_string=str_replace('"|"', '_', $old_string);
print $new_string;

I got "lazy_dog"

Ed

Friday, February 2, 2007, 10:01:14 PM, you wrote:

> Thanks,

> but I think that I must use preg_replace because the condition is: replace
> the chars (pipe or space) when they are between "

> ie :  src=file:///h|/hjcjdgh dlkgj/dgjk.jpg"  to 
> src=file:///h_/hjcjdgh_dlkgj/dgjk.jpg"

> Seb





> - Original Message - 
> From: <[EMAIL PROTECTED]>
> To: "Sébastien WENSKE" <[EMAIL PROTECTED]>
> Cc: 
> Sent: Friday, February 02, 2007 8:38 PM
> Subject: Re: [PHP] preg_replace();


> I am not a very experienced programmer, but I think that "str_replace"
> can be used in this case:
> $new_string=str_replace('|', '_', $old_string)

> then use the same function to replace spaces.

> Ed

> Friday, February 2, 2007, 9:30:37 PM, you wrote:

>> Hi all,

>> I want replace the "|" (pipe) and the " " (space) chars where are
>> between " (double-quotes)  by an underscore "_" with the
>> preg_replace(); funtction.

>> Can someone help me to find the correct regex.

>> Thanks in advance

>> Seb

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



Re: [PHP] preg_replace();

2007-02-02 Thread wwww
I am not a very experienced programmer, but I think that "str_replace"
can be used in this case:
$new_string=str_replace('|', '_', $old_string)

then use the same function to replace spaces.

Ed

Friday, February 2, 2007, 9:30:37 PM, you wrote:

> Hi all,

> I want replace the "|" (pipe) and the " " (space) chars where are
> between " (double-quotes)  by an underscore "_" with the
> preg_replace(); funtction.

> Can someone help me to find the correct regex.

> Thanks in advance

> Seb



-- 
Best regards,
 mailto:[EMAIL PROTECTED]

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



[PHP] preg_replace();

2007-02-02 Thread Sébastien WENSKE
Hi all,

I want replace the "|" (pipe) and the " " (space) chars where are between " 
(double-quotes)  by an underscore "_" with the preg_replace(); funtction.

Can someone help me to find the correct regex.

Thanks in advance

Seb

Re: [PHP] preg_replace (again)

2006-09-22 Thread Richard Lynch
On Wed, September 20, 2006 11:20 am, Pawel Miroslawski wrote:
> Hi
> it's example script:
>
>  $string = "This is some _color:pink_ colored text _color_";
>
> $patterns[0] = '/_color:(.*?)_/';
> $patterns[1] = '/_color_/';
> $replacements[0] = '';
> $replacements[1] = '';
>
> echo preg_replace($patterns, $replacements, $string);
> ?>
>
> It should be ok, but i don't test it.

For the sanitization...

.*? could be something more like:  [#a-z0-9A-Z]+

The # assumes you want to allow #ff style colors.

Since this whitelists the specific characters you allow, it's probably
better than the strip_tags thing.

-- 
Like Music?
http://l-i-e.com/artists.htm

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



Re: [PHP] preg_replace (again)

2006-09-20 Thread Pawel Miroslawski

Hi
it's example script:

';
$replacements[1] = '';

echo preg_replace($patterns, $replacements, $string);
?>

It should be ok, but i don't test it.

Pawel


Re: [PHP] preg_replace (again) [solved]

2006-09-20 Thread Andrei
Well you can use
string strip_tags ( string str [, string allowable_tags] )
function

Andy

Peter Lauri wrote:
> Hi,
> 
> Thanks for you comment. I already changed to .
> 
> About sanitation: Do you know any open source where it checks code if it is
> acceptable or not? Or should I just create a lib that do some preg_match to
> see if any javascript tag is inside (assuming javascript should not be
> allowed).
> 
> This is a private system, so I do not worry so much :)
> 
> /Peter
> 
> -Original Message-
> From: Robert Cummings [mailto:[EMAIL PROTECTED] 
> Sent: Wednesday, September 20, 2006 2:13 PM
> To: Peter Lauri
> Cc: 'PHP General'
> Subject: RE: [PHP] preg_replace (again) [solved]
> 
> On Wed, 2006-09-20 at 11:45 +0700, Peter Lauri wrote:
>> Just to share my solution:
> 
> Out of curiosity, why don't you go with the very well known BBCode
> system?
> 
>> preg_replace('/_color:(.*?)_(.*?)_color_/i', '$2',
>> $html);
> 
> Hopefully this is a private system, otherwise someone not very nice
> might do the following:
> 
> 
> This is some _color:pink">  language="javascript">
> document.location = '<a  rel="nofollow" href="http://www.myDoityPr0nCollection.com">http://www.myDoityPr0nCollection.com</a>';
> http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



RE: [PHP] preg_replace (again) [solved]

2006-09-20 Thread Peter Lauri
Hi,

Thanks for you comment. I already changed to .

About sanitation: Do you know any open source where it checks code if it is
acceptable or not? Or should I just create a lib that do some preg_match to
see if any javascript tag is inside (assuming javascript should not be
allowed).

This is a private system, so I do not worry so much :)

/Peter

-Original Message-
From: Robert Cummings [mailto:[EMAIL PROTECTED] 
Sent: Wednesday, September 20, 2006 2:13 PM
To: Peter Lauri
Cc: 'PHP General'
Subject: RE: [PHP] preg_replace (again) [solved]

On Wed, 2006-09-20 at 11:45 +0700, Peter Lauri wrote:
> Just to share my solution:

Out of curiosity, why don't you go with the very well known BBCode
system?

> preg_replace('/_color:(.*?)_(.*?)_color_/i', '$2',
> $html);

Hopefully this is a private system, otherwise someone not very nice
might do the following:


This is some _color:pink"> 
document.location = '<a  rel="nofollow" href="http://www.myDoityPr0nCollection.com">http://www.myDoityPr0nCollection.com</a>';
http://www.interjinn.com |
::
| An application and templating framework for PHP. Boasting  |
| a powerful, scalable system for accessing system services  |
| such as forms, properties, sessions, and caches. InterJinn |
| also provides an extremely flexible architecture for   |
| creating re-usable components quickly and easily.  |
`'

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



RE: [PHP] preg_replace (again) [solved]

2006-09-20 Thread Robert Cummings
On Wed, 2006-09-20 at 11:45 +0700, Peter Lauri wrote:
> Just to share my solution:

Out of curiosity, why don't you go with the very well known BBCode
system?

> preg_replace('/_color:(.*?)_(.*?)_color_/i', '$2',
> $html);

Hopefully this is a private system, otherwise someone not very nice
might do the following:


This is some _color:pink"> 
document.location = 'http://www.myDoityPr0nCollection.com';
http://www.interjinn.com |
::
| An application and templating framework for PHP. Boasting  |
| a powerful, scalable system for accessing system services  |
| such as forms, properties, sessions, and caches. InterJinn |
| also provides an extremely flexible architecture for   |
| creating re-usable components quickly and easily.  |
`'

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



RE: [PHP] preg_replace (again) [solved]

2006-09-19 Thread Peter Lauri
Just to share my solution:

preg_replace('/_color:(.*?)_(.*?)_color_/i', '$2',
$html);

/Peter

-Original Message-
From: Peter Lauri [mailto:[EMAIL PROTECTED] 
Sent: Wednesday, September 20, 2006 9:42 AM
To: 'PHP General'
Subject: [PHP] preg_replace (again)

Hi group,

 

I know I am a little bit stupid when it comes to actually figuring out how
to use the preg_match and preg_replace. This is what I am facing:

 

A string like this: This is some _color:pink_ colored text _color_ that I
want to transfer

 

Should convert to: This is some colored text that
I want to transfer

 

Anyone who see a simple solution to this? Right now I have created an ugly
script that do the same thing, but I want to start to learn and use
preg_match.

 

Thanks.

 

/Peter

 

www.lauri.se <http://www.lauri.se/>  - Personal web site

www.dwsasia.com <http://www.dwsasia.com/>  - Company web site 

 

 

 

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



[PHP] preg_replace (again)

2006-09-19 Thread Peter Lauri
Hi group,

 

I know I am a little bit stupid when it comes to actually figuring out how
to use the preg_match and preg_replace. This is what I am facing:

 

A string like this: This is some _color:pink_ colored text _color_ that I
want to transfer

 

Should convert to: This is some colored text that
I want to transfer

 

Anyone who see a simple solution to this? Right now I have created an ugly
script that do the same thing, but I want to start to learn and use
preg_match.

 

Thanks.

 

/Peter

 

www.lauri.se   - Personal web site

www.dwsasia.com   - Company web site 

 

 

 



Re: [PHP] preg_replace \\1 yIKES!

2006-06-14 Thread tedd
At 3:45 AM -0700 6/14/06, sam wrote:
>On Jun 13, 2006, at 1:58 PM, tedd wrote:
>
>>At 11:33 AM -0700 6/13/06, sam wrote:
>>>Wow this is hard I can't wait till I get the hang of it.
>>>
>>>Capitalize the first letter of a word.
>>
>>Try:
>>
>>>$word = "yikes";
>>$word[0]=strtoupper($word[0]);
>>echo($word);
>>?>
>
>
>This blows my mind. What should one think, "everything is an array"? Well, 
>okay not every but everything that's in linear consecutive order; anything 
>that can be indexed?
>
>I was trying to make an array from $word but explode() doesn't take an empty 
>delimiter so I gave up and went for the preg_replace.

Sorry, it was a throwback to my C days -- using ucfist() is better.

tedd
-- 

http://sperling.com  http://ancientstones.com  http://earthstones.com

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



Re: [PHP] preg_replace \\1 yIKES!

2006-06-14 Thread Jochem Maas
Stut wrote:
> Jochem Maas wrote:
>>  I did berate the fact that you waited no more than 7 minutes before
>>  sending a 'help me' reminder regarding your original post.
> 
> While I agree with most of what you are saying, you may want to check
> that email again. Sams 'for Eyes burning...' email was in response to
> someone privately suggesing that he use ucfirst. It was *not* a 'help
> me' reminder, so drop that criticism please.

consider it dropped - I didn't catch that it was a reply to an offlist post.

> 
> Aside from that, anyone who manages to miss ucfirst when R'ingTFM for
> this problem should RTFM some more.
> 
> -Stut
> 

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



Re: [PHP] preg_replace \\1 yIKES!

2006-06-14 Thread sam




And hey yo, Jochem,
I did RTFM, for hours, I always do before I post to the list. I just


I'd tell you to RTFM (although I did tell you to read the manual  
regarding
the specifics of using preg_replace()'s 'e' modifier after showing  
you a

working example of how to use it, based on your original code snippet)


Yes, I'm using your example right now to help me learn this  
preg_replace beast.


The php.net page on preg_replace was just to overwhelming for the  
exhausted state of mind I was in.



I did berate the fact that you waited no more than 7 minutes before
sending a 'help me' reminder regarding your original post.


No, that was a misunderstanding, I was just saying thanks to the guy  
who said, "why not just use ulfirst()." (Which I also missed on the  
php.net page on strings.)




missed all the answers in the fine manual this time. Cut me some  
slack.


cut you slack? are you a graphic designer or something?


How did you know? I was 'in' graphics for 30 years before I threw my  
hands up at that lunatic world and decided to become a programmer.


I love the printing industry but ever since the Mac took over  
everybody went nuts. The printers are still mad, after 15 years, that  
the Mac took away their razor blades and rubylith.


Checks in the mail.

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



Re: [PHP] preg_replace \\1 yIKES!

2006-06-14 Thread Stut

Jochem Maas wrote:

 I did berate the fact that you waited no more than 7 minutes before
 sending a 'help me' reminder regarding your original post.


While I agree with most of what you are saying, you may want to check 
that email again. Sams 'for Eyes burning...' email was in response to 
someone privately suggesing that he use ucfirst. It was *not* a 'help 
me' reminder, so drop that criticism please.


Aside from that, anyone who manages to miss ucfirst when R'ingTFM for 
this problem should RTFM some more.


-Stut

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



Re: [PHP] preg_replace \\1 yIKES!

2006-06-14 Thread Jochem Maas
sam wrote:
> 
> On Jun 13, 2006, at 1:58 PM, tedd wrote:
> 
>> At 11:33 AM -0700 6/13/06, sam wrote:
>>> Wow this is hard I can't wait till I get the hang of it.
>>>
>>> Capitalize the first letter of a word.
>>
>> Try:
>>
>> > $word = "yikes";
>> $word[0]=strtoupper($word[0]);
>> echo($word);
>> ?>
> 
> 
> This blows my mind. What should one think, "everything is an array"?

an array is an array.
a string is a string.

characters in a string can be accessed using array-like notation using the
offset postion of the relevant char (elements are zero based)

> Well, okay not every but everything that's in linear consecutive order;
> anything that can be indexed?
> 
> I was trying to make an array from $word but explode() doesn't take an
> empty delimiter so I gave up and went for the preg_replace.
> 
> 
> And hey yo, Jochem,
> I did RTFM, for hours, I always do before I post to the list. I just

I'd tell you to RTFM (although I did tell you to read the manual regarding
the specifics of using preg_replace()'s 'e' modifier after showing you a
working example of how to use it, based on your original code snippet)

I did berate the fact that you waited no more than 7 minutes before
sending a 'help me' reminder regarding your original post.

> missed all the answers in the fine manual this time. Cut me some slack.

cut you slack? are you a graphic designer or something?

> 
> Where should I wire the Euros to?

my paypal account name is my email address :-)

> 
> --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] preg_replace \\1 yIKES!

2006-06-14 Thread sam


On Jun 13, 2006, at 1:58 PM, tedd wrote:


At 11:33 AM -0700 6/13/06, sam wrote:

Wow this is hard I can't wait till I get the hang of it.

Capitalize the first letter of a word.


Try:





This blows my mind. What should one think, "everything is an array"?  
Well, okay not every but everything that's in linear consecutive  
order; anything that can be indexed?


I was trying to make an array from $word but explode() doesn't take  
an empty delimiter so I gave up and went for the preg_replace.



And hey yo, Jochem,
I did RTFM, for hours, I always do before I post to the list. I just  
missed all the answers in the fine manual this time. Cut me some slack.


Where should I wire the Euros to?

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



Re: [PHP] preg_replace \\1 yIKES!

2006-06-13 Thread Dave Goodchild

On 13/06/06, tedd <[EMAIL PROTECTED]> wrote:


At 11:33 AM -0700 6/13/06, sam wrote:
>Wow this is hard I can't wait till I get the hang of it.
>
>Capitalize the first letter of a word.

Why not use ucfirst(), that is what the function is for.
--


http://sperling.com  http://ancientstones.com  http://earthstones.com

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





--
http://www.web-buddha.co.uk
http://www.projectkarma.co.uk


Re: [PHP] preg_replace \\1 yIKES!

2006-06-13 Thread tedd
At 11:33 AM -0700 6/13/06, sam wrote:
>Wow this is hard I can't wait till I get the hang of it.
>
>Capitalize the first letter of a word.

Try:



tedd
-- 

http://sperling.com  http://ancientstones.com  http://earthstones.com

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



Re: [PHP] preg_replace \\1 yIKES!

2006-06-13 Thread Robert Cummings
On Tue, 2006-06-13 at 15:07, Jochem Maas wrote:
> sam wrote:
> > 
> > for
> > Eyes burning; caffein shakes; project overdue
> 
> nobody here cares whether your project is overdue -
> 
> waiting 7 minutes before sending a 'reminder' about the
> question you asked suggests you need to take a PATIENCE
> lesson.
> 
> or did some fraudster sell you a php support contract?
> ... for 500 euros you can contact me anytime at [EMAIL PROTECTED]
> for all you php woes :-P

Oooh, GREAT IDEA!! *scribbles down into his notebook*

:B

Rob.
-- 
..
| InterJinn Application Framework - http://www.interjinn.com |
::
| An application and templating framework for PHP. Boasting  |
| a powerful, scalable system for accessing system services  |
| such as forms, properties, sessions, and caches. InterJinn |
| also provides an extremely flexible architecture for   |
| creating re-usable components quickly and easily.  |
`'

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



Re: [PHP] preg_replace \\1 yIKES!

2006-06-13 Thread Jochem Maas
sam wrote:
> 
> for
> Eyes burning; caffein shakes; project overdue

nobody here cares whether your project is overdue -

waiting 7 minutes before sending a 'reminder' about the
question you asked suggests you need to take a PATIENCE
lesson.

or did some fraudster sell you a php support contract?
... for 500 euros you can contact me anytime at [EMAIL PROTECTED]
for all you php woes :-P

> 
> Thanks
> 
>> Why not just use ucfirst
>> http://us2.php.net/manual/en/function.ucfirst.php?
>>
>> -Original Message-
>> From: sam [mailto:[EMAIL PROTECTED]
>> Sent: Tuesday, June 13, 2006 2:34 PM
>> To: PHP
>> Subject: [PHP] preg_replace \\1 yIKES!
>>
>>
>> Wow this is hard I can't wait till I get the hang of it.
>>
>> Capitalize the first letter of a word.
>>
>> echo preg_replace('/(^)(.)(.*$)/', strtoupper('\\2') . '\\3', 'yikes!');
>> // outputs yikes!
>>
>> Nope didn't work.
>>
>> So I want to see if I'm in the right place:
>>
>> echo preg_replace('/(^)(.)(.*$)/', '\\1' . '-' . strtoupper('\\2') .
>> '-' . '\\3', 'yikes!');
>> //outputs -y-ikes!
>>
>> So yea I've got it surrounded why now strtoupper: Yikes!
>>
>> 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
> 

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



Re: [PHP] preg_replace \\1 yIKES!

2006-06-13 Thread Jochem Maas
sam wrote:
> 
> Wow this is hard I can't wait till I get the hang of it.
> 
> Capitalize the first letter of a word.
> 
> echo preg_replace('/(^)(.)(.*$)/', strtoupper('\\2') . '\\3', 'yikes!');
> // outputs yikes!
> 
> Nope didn't work.
> 
> So I want to see if I'm in the right place:
> 
> echo preg_replace('/(^)(.)(.*$)/', '\\1' . '-' . strtoupper('\\2') . '-'
> . '\\3', 'yikes!');
> //outputs -y-ikes!
> 
> So yea I've got it surrounded why now strtoupper: Yikes!

to running strtoupper() on the string literal '\\2' which after it has been
capitalized will be '\\2'.

if you *really* want to use preg_replace():

echo preg_replace("/(^)(.)(.*\$)/e", "\"\\1\" . strtoupper(\"\\2\") . \"\\3\"", 
"yikes!"),
 "\n";

notice the 'e' modifier on the regexp - it causes the replace string to be 
treated as a string of php
code that is autoamtically evaluated - checvk the manual for more info.
(I used double quotes only so that I could test the code on the cmdline using 
'php -r')

...BUT I suggest you try this function instead: ucfirst()

> 
> 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] preg_replace \\1 yIKES!

2006-06-13 Thread sam


for
Eyes burning; caffein shakes; project overdue

Thanks

Why not just use ucfirst http://us2.php.net/manual/en/ 
function.ucfirst.php?


-Original Message-
From: sam [mailto:[EMAIL PROTECTED]
Sent: Tuesday, June 13, 2006 2:34 PM
To: PHP
Subject: [PHP] preg_replace \\1 yIKES!


Wow this is hard I can't wait till I get the hang of it.

Capitalize the first letter of a word.

echo preg_replace('/(^)(.)(.*$)/', strtoupper('\\2') . '\\3',  
'yikes!');

// outputs yikes!

Nope didn't work.

So I want to see if I'm in the right place:

echo preg_replace('/(^)(.)(.*$)/', '\\1' . '-' . strtoupper('\\2') .
'-' . '\\3', 'yikes!');
//outputs -y-ikes!

So yea I've got it surrounded why now strtoupper: Yikes!

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



  1   2   3   >