06-20-2008
Search Replace with regular expressions
Hello
I have this regular expression:
</book>(?:\n)<collection>(.*)</collectioninfo>
And I have this peace of text on a FILE
<book bookid="3" title="the title 3" remaining = "50" price="100">
<reader readerid="1"><![CDATA[John]]></reader>
<reader readerid="2"><![CDATA[Michael]]></reader>
<reader readerid="3"><![CDATA[Peter]]></reader>
<reader readerid="4"><![CDATA[Maria]]></reader>
</book>
<collectioninfo id="123">
<title>colletion 1</title>
<date>Jun 19 11:00</date>
<type>2</type>
<limit>100</limit>
</collectioninfo>
<book bookid="4" title="the title 4" remaining = "50" price="100">
<reader readerid="1"><![CDATA[John]]></reader>
<reader readerid="2"><![CDATA[Michael]]></reader>
<reader readerid="3"><![CDATA[Peter]]></reader>
<reader readerid="4"><![CDATA[Maria]]></reader>
</book>
And i need replace the text in BOLD for:
</book>
So... using PHP how can I do that ... but saving the result in the same file..
I mean.. replace the current text on a file.. for the new one..
Thx.
10 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
I'm trying to parse RichText to XML. I want to be able to capture everything between the '/par' tag in the RTF but not include the tag itself. So far all I have is this, '.*?\\par' but it leaves '\par' at the end of it. Any suggestions? (1 Reply)
Discussion started by: AresMedia
1 Replies
2. UNIX for Dummies Questions & Answers
Hi Gurus,
I need help with regular expressions. I want to create a regular expression which will take only alpha-numeric characters for 7 characters long and will throw out an error if longer than that.
i tried various combinations but couldn't get it, please help me how to get it guys.
... (2 Replies)
Discussion started by: ragha81
2 Replies
3. Shell Programming and Scripting
Hello,
Let say I have a string with content "Free 100%". How can extract only "100" using ksh? I would this machanism to work if instead of "100" there is any kind of combination of numbers(ex. "32", "1238", "1"). I want to get only the digits.
I have written something like this:
... (4 Replies)
Discussion started by: whatever
4 Replies
4. UNIX for Dummies Questions & Answers
how to find for a file whose name has all characters in uppercase after 'project'?
I tried this:
find . -name 'project**.pdf'
./projectABC.pdf
./projectABC123.pdf
I want only ./projectABC.pdf
What is the regular expression that correponds to "all characters are capital"?
thanks (8 Replies)
Discussion started by: melanie_pfefer
8 Replies
5. UNIX for Advanced & Expert Users
Hi,
below is a piece of code written by my predecessor at work.
I'm kind of a newbie and am trying to figure out all the regular expressions in this piece of code.
It is really a tough time for me to figure out all the regular expressions.
Please shed some light on the regular expressions... (3 Replies)
Discussion started by: ramky79
3 Replies
6. Shell Programming and Scripting
Hello guys/gals,
i am sorry as this is probably very simply but i am slowly learning perl and need to convert some old korn shell scripts.
I need to be able to search a file line by line but only match a string at particular location on that line, for example character 20-30. So my file... (4 Replies)
Discussion started by: dynamox
4 Replies
7. UNIX for Advanced & Expert Users
I have a flat file with the following drug names
Nutropin AQ 20mg PEN Cart 2ml
Norditropin Cart 15mg/1.5ml
I have to extract digits that are before mg i.e 20 and 15 ; how to do this using regular expressions
Thanks
ram (1 Reply)
Discussion started by: ramky79
1 Replies
8. UNIX for Dummies Questions & Answers
In regular expressions with grep(or egrep), ^ works if we want something in starting of line..but what if we write ^^^ or ^ for pattern matching??..Hope u all r familiar with regular expressions for pattern matching.. (1 Reply)
Discussion started by: aadi_uni
1 Replies
9. Shell Programming and Scripting
I have a file that I'm trying to find all the cases of phone number extensions and deleting them. So input file looks like:
abc
x93825
def
13234
x52673
hello
output looks like:
abc
def
13234
hello
Basically delete lines that have 5 numbers following "x". I tried: x\(4) but it... (7 Replies)
Discussion started by: pxalpine
7 Replies
10. Shell Programming and Scripting
I need to pick a part of string lets stay started with specific character and end with specific character to replace using sed command
the line is like this:my audio book 71-skhdfon1dufgjhgf8.wav'
I want to move the characters beginning with - end before.
I have different files with random... (2 Replies)
Discussion started by: XP_2600
2 Replies
LEARN ABOUT PHP
mb_ereg_replace_callback
MB_EREG_REPLACE_CALLBACK(3) 1 MB_EREG_REPLACE_CALLBACK(3)
mb_ereg_replace_callback - Perform a regular expresssion seach and replace with multibyte support using a callback
SYNOPSIS
string mb_ereg_replace_callback (string $pattern, callable $callback, string $string, [string $option = "msr"])
DESCRIPTION
Scans $string for matches to $pattern, then replaces the matched text with the output of $callback function.
The behavior of this function is almost identical to mb_ereg_replace(3), except for the fact that instead of $replacement parameter, one
should specify a $callback.
PARAMETERS
o $pattern
- The regular expression pattern. Multibyte characters may be used in $pattern.
o $callback
- A callback that will be called and passed an array of matched elements in the $subject string. The callback should return the
replacement string. You'll often need the $callback function for a mb_ereg_replace_callback(3) in just one place. In this case
you can use an anonymous function to declare the callback within the call to mb_ereg_replace_callback(3). By doing it this way you
have all information for the call in one place and do not clutter the function namespace with a callback function's name not used
anywhere else.
o $string
- The string being checked.
o $option
- Matching condition can be set by $option parameter. If i is specified for this parameter, the case will be ignored. If x is
specified, white space will be ignored. If m is specified, match will be executed in multiline mode and line break will be
included in '.'. If p is specified, match will be executed in POSIX mode, line break will be considered as normal character. Note
that e cannot be used for mb_ereg_replace_callback(3).
RETURN VALUES
The resultant string on success, or FALSE on error.
NOTES
Note
The internal encoding or the character encoding specified by mb_regex_encoding(3) will be used as the character encoding for this
function.
EXAMPLES
Example #1
mb_ereg_replace_callback(3) example
<?php
// this text was used in 2002
// we want to get this up to date for 2003
$text = "April fools day is 04/01/2002
";
$text.= "Last christmas was 12/24/2001
";
// the callback function
function next_year($matches)
{
// as usual: $matches[0] is the complete match
// $matches[1] the match for the first subpattern
// enclosed in '(...)' and so on
return $matches[1].($matches[2]+1);
}
echo mb_ereg_replace_callback(
"(d{2}/d{2}/)(d{4})",
"next_year",
$text);
?>
The above example will output:
April fools day is 04/01/2003
Last christmas was 12/24/2002
Example #2
mb_ereg_replace_callback(3) using anonymous function supported in PHP 5.3.0 or later
<?php
// this text was used in 2002
// we want to get this up to date for 2003
$text = "April fools day is 04/01/2002
";
$text.= "Last christmas was 12/24/2001
";
echo mb_ereg_replace_callback(
"(d{2}/d{2}/)(d{4})",
function ($matches) {
return $matches[1].($matches[2]+1);
},
$text);
?>
SEE ALSO
mb_regex_encoding(3), mb_ereg_replace(3), Anonymous functions, information about the callback type.
PHP Documentation Group MB_EREG_REPLACE_CALLBACK(3)