$text = "Hello there, <<test>>.
My name is <<name>>";

$ASSIGN   = array(test => "this is a test", 'name'=> 'BOB', );
$OPENTAG  = "<<";
$CLOSETAG = ">>";

print preg_replace( "/$OPENTAG(.*?)$CLOSETAG/e", '$ASSIGN[$1]', $text );


prints:
Hello there, this is a test.
My name is BOB


To do what you want, throw a loop statement around the preg_replace
to loop thru each line of a file... etc...  :)

> -----Original Message-----
> From: Jeroen Olthof [mailto:[EMAIL PROTECTED]]
> Sent: Monday, July 16, 2001 12:01 PM
> To: [EMAIL PROTECTED]
> Subject: [PHP] string replace using ereg
> 
> 
> hi,
> 
> I want to replace strings in string using a key / value array as the
> replacemant contract
> basicly,
> I want to find a open en close tag, pick out the word in the middle and
> replace it by the value of the key that match the picked out word.
> example
> 
> <<test>> <<test>>
> 
> should result in
> 
> this is a test this is a test
> 
> well, The below code works for only one replacement cause when I add another
> on the same line. it will pick out
> test>> <<test
> als the key wordt and therefor isn't able to find this key in the array.
> 
> how can I get the reg expression so it will not only get the first occurence
> of the open tag and the last of the close tag ??
> 
> please help,
> 
> kind regards
> Jeroen Olthof
> 
> $ASSIGN = array(test => "this is a test" )
> 
> $OPENTAG = "<<";
> $CLOSETAG = ">>";
> 
> while ($line[$i]) {
>     ereg($OPENTAG."([^*]*)".$CLOSETAG, $line[$i], $regs);
>     $newString .= str_replace($this->OPENTAG.$regs[1].$this->CLOSETAG,
> $ASSIGN[$regs[1]], $line[$i]);
> }
> 
> 
> 
> -- 
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> To contact the list administrators, e-mail: [EMAIL PROTECTED]
> 

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

Reply via email to