Subdomain olmak url yolunda lang değiştirmek için düzenli ifade

6 Cevap php

Ben regex öğreniyorum. Ben çok basit bir sorum var:

Ben php.I içerik uzun bir dize diyor bütün yerleri dönüştürmek istiyorum var:

http://www.example.com/en/rest-of-url

karşı

http://en.example.com/rest-of-url

Biri bana bu konuda yardımcı olabilir mi? Ben bu preg_replace için kullanabilir mi?

Bonus: If you have a link karşı a good site which explains how karşı do the simplest things like this in regex, please post it. Every regex resource I look at gets very complicated very fast (even the Wikipedia article).

6 Cevap

PHP:

$search = '~http://www.example.com/([^/]+)/(.+)~';
$replace = 'http://$1.example.com/$2';
$new = preg_replace( $search, $replace, $original );

http://regexlib.com/

Güzel bir düzenli ifade Ön ve test hile var

Varsayarsak:

preg_replace($regex, $replaceWith, $subject); 

$ Konu orijinal metindir. $ Regex olmalıdır:

'@http://([^\.]*)\.example\.com/en/(.*)@'

$ ReplaceWith olmalıdır:

'http://$1.example.com/$2'

EDITED: Benim orignial cevap olarak, ben size etki alanı adı kısmını ele istedim aslında kaçırmıştı.

Bu herhangi etkialaniadi ile çalışacak:

$url = 'http://www.example.com/en/rest-of-url';

echo preg_replace('%www(\..*?/)(\w+)/%', '\2\1', $url);

verir:

http://en.example.com/rest-of-url

Referans: preg_replace

Ancak sizin basit bir soru için, regex için gerek yok, temel regex hakkında bilgi edinebilirsiniz.

$str="http://www.example.com/en/rest-of-url";
$s = explode("/",$str);
unset( $s[3]);
print_r( implode("/",$s) ) ;

Bu Regex Öğreticiler için harika bir site

http://www.regular-expressions.info/ Regex Tutor