Re: please help with regular expression in preg_replace

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Many thanx to Jim and andy for their replies, with Jim`s changes its now working like in sed. Excuse me for my stupid question, but im old unix/linux system engineer coding with C , perl and bash, php gave me unpredictable results in this task. ;-) so, in final, may be this help some other roundcube users who need one universal site for many domain access.
this is test page:
<?php

$host = "host.1stdom.com" ;
//$host = "host.2nddom.1stdom.com" ;
$pattern1 = '/[^.]*\./U' ;
$pattern2 = '/^[^.]+\./' ;

exec( "echo $host | sed s/[^.]*\.//", $dom_sed ) ;
$p1_1 = preg_replace( '/[^.]*\./U' , '', $host ) ;
$p1_2 = preg_replace( $pattern1 , '', $host ) ;
$p2_1 = preg_replace( '/^[^.]+\./' , '', $host ) ;
$p2_2 = preg_replace( $pattern2 , '', $host ) ;

echo "$host <br>" ;
echo "dom_sed = $dom_sed[0]<br>" ;
echo "p1_1 = $p1_1 <br> " ;
echo "p1_2 = $p1_2 <br> " ;
echo "p2_1 = $p2_1 <br> " ;
echo "p2_2 = $p2_2 <br> " ;

?>
with result:
host.1stdom.com
dom_sed = 1stdom.com
p1_1 = com
p1_2 = com
p2_1 = 1stdom.com
p2_2 = 1stdom.com


and this is line which i need in roundcube setup:

$rcmail_config['username_domain'] = preg_replace( '/^[^.]+\./' , '', $_SERVER['HTTP_HOST'] ) ;

many thanks again

Rene

----- Original Message ----- From: "Jim Lucas" <lists@xxxxxxxxx>
To: "Red" <red@xxxxxx>
Cc: <php-general@xxxxxxxxxxxxx>
Sent: Friday, October 30, 2009 12:33 AM
Subject: Re:  please help with regular expression in preg_replace


Red wrote:
hello, im not a php developer, i just need to rewrite one php file but having problem with understanding syntax of regexp in php.

i need to get domain name from fqdn (for example from $_SERVER['HTTP_HOST'] )

in sed its working well with "s/[^.]*\.//" , but preg_replace behaves weird.


http_host is for example hostname.domain.com

<?php
$host = $_SERVER['HTTP_HOST'];
exec( "echo $host | sed s/[^.]*\.//", $domain ) ;
echo "$domain[0]"
?>

return "domain.com", but

<?php
$host = $_SERVER['HTTP_HOST'];
$domain = preg_replace( '/[^.]*\./' , '', $host) ;
echo "$domain";
?>

return only "com"

i think when this php page get many hits, its not so wise to call sed everytime, i would like to ask someone for help how to write preg_replace pattern.

thanx

Rene


I would add one thing and change another.

<?php
$host = $_SERVER['HTTP_HOST'];
$domain = preg_replace( '/^[^.]+\./' , '', $host) ;
echo $domain;
?>

Adding an additional '^' to the start tells it to start at the beginning.
And changing '*' to a '+'

Jim

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


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux