comes from the following error:
(\s+face=\"Verdana, Arial, Helvetica, sans-serif\"|)>
After the | (OR) sign, you must define another case, example:
echo eregi_replace ("<tr bgcolor=\"#F8F8F1\">(\s*)<td>\s*<font size=\"2\"(\s+face=\"Verdana, Arial, Helvetica, sans-serif\"|\s)>\s*purchasing power parity", '%POWER%', '<td><tr>sdsdss<tr bgcolor="#f8f8f1" face="Verdana, Arial, Helvetica, sans-serif"><td><font size="2">Purchasing power parity');
Secondly, it's right that the \s expression is not recognised in
" purchasing\s+power\s+parity " , a little strange, but you can use two different ways instead of '\s':
- [[:space:]]
- [ ]
The brackets allows you to define a sequence of characters patterns (in the second case above, the space character).
It will give:
echo eregi_replace ("<tr bgcolor=\"#F8F8F1\">(\s*)<td>\s*<font size=\"2\">\s*purchasing[[:space:]]+power[[:space:]]+parity", '%POWER%', '<td><tr>sdsdss<tr bgcolor="#f8f8f1"><td><font size="2">Purchasing power parity');
Just a little help, you can find on the page http://www.php.net/manual/en/ref.regex.php that could be useful for you:
^ Start of line $ End of line n? Zero or only one single occurrence of character 'n' n* Zero or more occurrences of character 'n' n+ At least one or more occurrences of character 'n' n{2} Exactly two occurrences of 'n' n{2,} At least 2 or more occurrences of 'n' n{2,4} From 2 to 4 occurrences of 'n' . Any single character () Parenthesis to group expressions (.*) Zero or more occurrences of any single character, ie, anything! (n|a) Either 'n' or 'a' [1-6] Any single digit in the range between 1 and 6 [c-h] Any single lower case letter in the range between c and h [D-M] Any single upper case letter in the range between D and M [^a-z] Any single character EXCEPT any lower case letter between a and z.
Pitfall: the ^ symbol only acts as an EXCEPT rule if it is the very first character inside a range, and it denies the entire range including the ^ symbol itself if it appears again later in the range. Also remember that if it is the first character in the entire expression, it means "start of line". In any other place, it is always treated as a regular ^ symbol. In other words, you cannot deny a word with ^undesired_word or a group with ^(undesired_phrase). Read more detailed regex documentation to find out what is necessary to achieve this.
[_4^a-zA-Z] Any single character which can be the underscore or the number 4 or the ^ symbol or any letter, lower or upper case
?, +, * and the {} count parameters can be appended not only to a single character, but also to a group() or a range[].
therefore, ^.{2}[a-z]{1,2}_?[0-9]*([1-6]|[a-f])[^1-9]{2}a+$ would mean:
^.{2} = A line beginning with any two characters, [a-z]{1,2} = followed by either 1 or 2 lower case letters, _? = followed by an optional underscore, [0-9]* = followed by zero or more digits, ([1-6]|[a-f]) = followed by either a digit between 1 and 6 OR a lower case letter between a and f, [^1-9]{2} = followed by any two characters except digits between 1 and 9 (0 is possible), a+$ = followed by at least one or more occurrences of 'a' at the end of a line.
Sid a écrit: Hello,
Well I am doing by first reg ex operations and I am having problems which I just cannot figure out.
For example I tried
echo eregi_replace ("<tr bgcolor=\"#F8F8F1\">(\s*)<td>\s*<font size=\"2\">\s*purchasing power parity", '%POWER%', '<td><tr>sdsdss<tr bgcolor="#f8f8f1"><td><font size="2">Purchasing power parity');
and this worked perfectly,
but when I chnaged that to
echo eregi_replace ("<tr bgcolor=\"#F8F8F1\">(\s*)<td>\s*<font size=\"2\">\s*purchasing\s+power\s+parity", '%POWER%', '<td><tr>sdsdss<tr bgcolor="#f8f8f1"><td><font size="2">Purchasing power parity');
It does not detect the string. Srange. According to what I know, \s+ will detect a single space also. I tried chnaging the last 2 \s+ to \s* but this did not work also.
Any ideas on this one?
As I proceed I would like the expression to detect the optional face attribute also, so I tried
echo eregi_replace ("<tr bgcolor=\"#F8F8F1\">(\s*)<td>\s*<font size=\"2\"(\s+face=\"Verdana, Arial, Helvetica, sans-serif\"|)>\s*purchasing power parity", '%POWER%', '<td><tr>sdsdss<tr bgcolor="#f8f8f1" face="Verdana, Arial, Helvetica, sans-serif"><td><font size="2">Purchasing power parity');
... and this gave me an error like
Warning: eregi_replace(): REG_EMPTY:çempty (sub)expression in D:\sid\dg\test.php on line 2
Any ideas? BTW any place where I can get started on regex? I got a perl book that explains regex, but I have got to learn perl first (I dont know any perl)
Thanks in advance.
- Sid
Sid a écrit:
Hello,
Well I am doing by first reg ex operations and I am having problems which I just cannot figure out.
For example I tried echo eregi_replace ("<tr bgcolor=\"#F8F8F1\">(\s*)<td>\s*<font size=\"2\">\s*purchasing power parity", '%POWER%', '<td><tr>sdsdss<tr bgcolor="#f8f8f1"><td><font size="2">Purchasing power parity'); and this worked perfectly,
but when I chnaged that to echo eregi_replace ("<tr bgcolor=\"#F8F8F1\">(\s*)<td>\s*<font size=\"2\">\s*purchasing\s+power\s+parity", '%POWER%', '<td><tr>sdsdss<tr bgcolor="#f8f8f1"><td><font size="2">Purchasing power parity'); It does not detect the string. Srange. According to what I know, \s+ will detect a single space also. I tried chnaging the last 2 \s+ to \s* but this did not work also. Any ideas on this one?
As I proceed I would like the expression to detect the optional face attribute also, so I tried echo eregi_replace ("<tr bgcolor=\"#F8F8F1\">(\s*)<td>\s*<font size=\"2\"(\s+face=\"Verdana, Arial, Helvetica, sans-serif\"|)>\s*purchasing power parity", '%POWER%', '<td><tr>sdsdss<tr bgcolor="#f8f8f1" face="Verdana, Arial, Helvetica, sans-serif"><td><font size="2">Purchasing power parity'); ... and this gave me an error like Warning: eregi_replace(): REG_EMPTY:çempty (sub)expression in D:\sid\dg\test.php on line 2
Any ideas? BTW any place where I can get started on regex? I got a perl book that explains regex, but I have got to learn perl first (I dont know any perl)
Thanks in advance.
- Sid
-- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php