2011-03-24 16 views
0

我知道preg_replace是如何工作的,但我對正則表達式感到恐懼。這是我想要實現的。我有網址:如何使用preg_replace替換URL中的標題周圍的文本?

http://localhost/Wiki/index.php?*title=***TEST***&action=edit&redlink=1* 

我要替換該網址這一個:

http://localhost/Wiki/index.php/*Special:FormStart?page_name=***TEST***&form=Main* 

而從第一URL(這是這個前TEST)採取標題,並把它變成了新的網址。

這裏是我的想法至今

$pattern = '/^?title=\ Dynamic title goes here \&action=edit&redlink=1$/'; 

$replaceW = '/^Special:FormStart?page_name=\ Dynamic title goes here \&form=Main$/'; 

取代它,如果你讓我開始對這個我會很感激!

+0

在你的第一個網址,你有「維基」,但在你的預期結果中,你有'WikiError'。這是一個錯字,還是打算? – sawa 2011-03-24 03:55:58

+0

它是錯字,應該是Wiki – user585303 2011-03-24 04:00:09

回答

0

嘗試......

preg_replace(
    '/^http:\/\/localhost\/Wiki\/index\.php\?title=(.*(?=&))&action=edit&redlink=1$/', 
    'http://localhost/Wiki/index.php/Special:FormStart?page_name=$1&form=Main', 
    'http://localhost/Wiki/index.php?title=TEST&action=edit&redlink=1' 
); 

注意(.*(?=&))通過使用先行替換動態文本(更多這方面的信息,請參閱http://ruby.about.com/od/regularexpressions/a/lookback.htm

+0

Tyvm,我將如何去取代頁面中的幾個網址的幾個網址? – user585303 2011-03-24 04:57:33

+0

Doesen't ='(。*)'&action會做同樣的事情嗎? – sln 2011-03-24 05:36:09

+0

@Tyvm,如果url是鬆散的,你可以刪除/..$/並將他的部分正則表達式改爲='(。*?)'&action,並使用/ m,多行修飾符,或者同時刪除'^ $'隨着(。*?) – sln 2011-03-24 05:44:06

相關問題