2016-01-31 41 views
0

我有正則表達式的麻煩。我正在編碼微笑系統。並從正則表達式獲得微笑代碼,例如:laugh::haha:。 我想獲取::之間的字符串,除了字母字符之外沒有其他字符。正則表達式獲得::之間沒有任何空格的字符串

<?php 
$a="hello my dear :smile: ho r u?"; 
$a=preg_replace("/:([a-zA-Z]):/","<b>$1</b>",$a); 
//or 
$a=preg_replace("/:(\w):/","<b>$1</b>",$a); 
echo $a; 
?> 

這些正則表達式都不起作用。我怎麼解決這個問題?

+0

使用試試你'[A-ZA-Z]'全部由自己,看看會發生什麼 – sln

+0

$ a = preg_replace(「/:([a-zA-Z] +):/」,「$ 1」,$ a); 我用過,它的工作原理:) –

+1

但是,如果你不知道它是如何工作的,這對你沒有用... – sln

回答

0

你必須允許一個或多個匹配數與+ quantificator:
這應該工作:

$a = preg_replace("/:([a-zA-Z]+):/","<b>$1</b>",$a); 
+0

噢謝謝你。我在正則表達式不好,這就是爲什麼我有一些問題它定義了:) –

相關問題