2014-02-20 43 views
-3

所以我試圖找出如何我可以輸入諸如更換字符串,同時保留一些內容

[url=value] 

,並把它變成

<a href="value"> 

當然,我希望保留價值。謝謝您的幫助!

最終我希望能夠餵養任何目標和替換,包括[email=value]<a href="mailto:value">

到目前爲止,我有:

$before = explode($fix['before'],"value"); 
$after = explode($fix['after'],"value"); 
preg_replace('/\\'.$before[0].'(.+?)'.'\\'.$before[1].'/', $after[0].'\1'.$after[1], $post); 
+0

請本研究自己。 SO不是問「How to ..」問題的地方,而是「爲什麼......」;) – kero

+0

PHP注意:未定義的變量:$ fix in/your line on line 1 – Mike

回答

1

您可以使用正則表達式。在PHP中,您可以使用preg_replace函數。你可以使用這樣的例子正則表達式是/\[url=(.+)\]/和更換將<a href="$1">

+0

您需要定義' 。+'作爲組'(。+)'或參考'$ 1'將不起作用 – kero

+0

是的,我得到了那麼多。我想最終能夠做到的是使用一個包含'[url = value]'或'[email = value]'等的變量,並將它提供給腳本並進行處理。 到目前爲止,我有 '$ before = explode($ fix ['before'],「value」); $ after = explode($ fix ['after'],「value」); preg_replace('/\\'.$ before [0]。'(。+?)'。'\\'。$ before [1]。'/',$ after [0]。'\ 1'之前的$。 '。$ after [1],$ post);' – user1748794

1

你可以使用這個表達式:

\[(.*?)=([^\]]+)] 

工作正則表達式的例子:

http://regex101.com/r/nL6lH9

測試字符串:

[url=http://www.web.com/test.php?key=valuepair] 

場較量:

match[1]: "url" 
match[2]: "http://www.web.com/test.php?key=valuepair" 

PHP:

$teststring = '[url=http://www.web.com/test.php?key=valuepair]'; 

preg_match('/\[(.*?)=([^\]]+)]/', $teststring, $match); 

// So you could test if $match[1] == 'url' or 'email' or etc. 

switch ($match[1]) { 
    case "url": 
     $output = '<a href="'.$match[2].'">Link</a>'; 
     break; 
    case "email": 
     $output = '<a href="mailto:'.$match[2].'">Send Email</a>'; 
     break; 
} 
echo str_replace($teststring, $output, $teststring); 

輸出:

<a href="http://www.web.com/test.php?key=valuepair">Link</a> 
+1

謝謝。我會看到我能從中得到多少! – user1748794

+0

不客氣,祝你好運! :) – MElliott

相關問題