2013-04-25 52 views
-2

如何编写preg_match,匹配字符串*My*php正则表达式:如何正确转义字符?

这不起作用:

$ptn = "/\*(.*)\*/"; 
$str = "*My*"; 
preg_match($ptn, $str, $matches); 
print_r($matches); 

,因为它输出:代替

Array 
(
    [0] => *My* 
    [1] => *My* 
) 

Array 
(
    [0] => *My* 
    [1] => My 
) 
+0

您的代码似乎有所需的输出。 – showdev 2013-04-25 17:17:50

+0

不,有区别。我需要单独提取“我的”,不包围“*”。 – camcam 2013-04-25 18:51:27

+0

是的,请查看下面的Marc B的答案。你的代码似乎是做你想做的。 http://phpfiddle.org/main/code/pgr-asi – showdev 2013-04-25 19:06:04

回答

4

在这里工作罚款:

php > preg_match('/\*(.*)\*/', '*My*', $matches); 
php > var_dump($matches); 
array(2) { 
    [0]=> 
    string(4) "*My*" 
    [1]=> 
    string(2) "My" 
} 

请记住,$matches数组将总是包含位置0中的整个匹配字符串,然后在槽1+中的个体匹配。

+0

我用[网站](http://www.pagecolumn.com/tool/pregtest.htm)来检查正则表达式,它似乎是在计算它错误。然后, – camcam 2013-04-25 19:12:37

+0

更好地报告该网站的错误。 – 2013-04-25 19:14:51