我必須做在PHP的preg_replace如下:PHP的preg_replace
[some text][id]
應<a href='id'>some_text</a>
其中id
是一個整數
嘗試下面的代替,可惜沒有按預期工作:
preg_replace("/\[[^)]\]\[[0-9]+\]/","<a href='$2'>$1</a>",$string);
此外,還可以考慮使用帶額外支架的示例[some text]][id]
,其中應使用最後一個支架。
任何想法?
我必須做在PHP的preg_replace如下:PHP的preg_replace
[some text][id]
應<a href='id'>some_text</a>
其中id
是一個整數
嘗試下面的代替,可惜沒有按預期工作:
preg_replace("/\[[^)]\]\[[0-9]+\]/","<a href='$2'>$1</a>",$string);
此外,還可以考慮使用帶額外支架的示例[some text]][id]
,其中應使用最後一個支架。
任何想法?
這裏有一個解決方案:
$string = '[some text][117]';
$s = preg_replace("/\[([^\]]+)\]\[([0-9]+)\]/","<a href='$2'>$1</a>",$string);
var_dump($s);
首先 - 使用$1
(或$2
),你需要捕獲括號()
模式。
第二個錯誤 - 您正在嘗試查找^)
,但您的文本中沒有)
。所以我把)
換成]
。
更新一個額外]
:
$s = preg_replace("/\[([^\]]+)(\]?)\]\[([0-9]+)\]/","<a href='$3'>$1$2</a>",$string);
不知道你需要這方面做的成立]
,所以我把它添加到鏈接文本。
在很多]]]
的情況下,你可以使用:
$s = preg_replace("/\[([^\]]+)(\]*)\]\[([0-9]+)\]/","<a href='$3'>$1$2</a>",$string);
是的,我看到了我的錯誤。謝謝! –
更新非常好!謝謝! –
當我添加'htmlspecialchars($ string)'作爲第三個參數時,它爲什麼不起作用?對於其他'preg_replace'函數它的工作。 –
對不起,已編輯。但是,函數的第一部分和第二部分不起作用 –
您需要捕獲要替換的內容才能在佔位符中獲取值。 – fpietka
如果您知道解決方案,請將它添加到'Answer'中? –