At 04:56 AM 12/12/2006 , Ford, Mike wrote:
>On 11 December 2006 19:43, Michael wrote:
>
>> At 08:29 AM 12/11/2006 , Brad Fuller wrote:
>> > 
>> > The example provided didn't work for me.  It gave me the same
>> > string without anything modified.
>> 
>> You are absolutely correct, this is what I get for not
>> testing it explicitly :( My most sincere apologies to the OP
>> and the list, there is an error in my example (see below for
>> correction) 
>> 
>> **** I have cut and pasted from further down in the quoted
>> message, for convenience ****
>> > > Using the tags you describe here, and assuming the source html is
>> > > in the variable $source_html, try this:
>> > > 
>> > > $trans_text = preg_replace("/(.*?)(<div id=result_box
>> > > dir=ltr>)(.*?)(<\/div>)(.*?)^/s","$3",$source_html);
>> 
>> The End of string symbol ^ should not be included.
>
>That's because ^ is not the end-of-string symbol -- it's the START-of-string 
>symbol.  $ is the END-of string symbol.  But the OP doesn't need either of 
>these symbols as he's not trying to match at the start or end of the string, 
>and nor does he need your suggested leading and trailing (.*?) for the same 
>reason.  Unless anchored with ^ and/or $, preg is perfectly happy to match in 
>the middle of the subject string.

Well, DOH, leave it to me to bugger something up like that heh, got the $ and ^ 
reversed. Thanks for correcting me :) 


>
>@Anthony: your pattern is fine -- it's what you're doing with it that's wrong.
>
>On 11 December 2006 08:03, Anthony Papillion wrote:
>
>> $trans_text = preg_match("\/<div id=result_box
>> dir=ltr>(.+?)<\/div>/");
>> 
>> The problem is that when I echo the value of $trans_text variable, I
>> end up with the entire HTML of the page.
>
>I don't see how this is possible, since preg_match returns an integer telling 
>you how many times the pattern matched -- which will be 0 or 1, since 
>preg_match doesn't do multiple matches!  You also clearly haven't given us 
>your actual call, since you've only included the pattern and not the subject 
>string.
>
>What you're after is the third argument to preg_match, which returns an array 
>of matched text; so for:
>
>    preg_match("/<div id=result_box> dir=ltr>(.+?)<\\/div>/", $orig, $matches);
>
>$matches[0]  will return the entire match (everything from "<div " to "</div>"
>$matches[1]  will return the first parenthesized expression, which is what 
>you're looking for.
>
>Note also the doubled backslash, since you need to pass a single backslash 
>through to escape the / for preg_match.  As an alternative, I would strongly 
>advise using a different delimiter, so that no escaping is needed; for 
>instance:
>
>    preg_match("#<div id=result_box> dir=ltr>(.+?)</div>#", $orig, $matches);
>
>Cheers!
>
>Mike
>
>---------------------------------------------------------------------
>Mike Ford,  Electronic Information Services Adviser,
>Learning Support Services, Learning & Information Services,
>JG125, James Graham Building, Leeds Metropolitan University,
>Headingley Campus, LEEDS,  LS6 3QS,  United Kingdom
>Email: [EMAIL PROTECTED]
>Tel: +44 113 283 2600 extn 4730      Fax:  +44 113 283 3211 
>
>
>To view the terms under which this email is distributed, please go to 
>http://disclaimer.leedsmet.ac.uk/email.htm
>
>-- 
>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

Reply via email to