2010-08-15 59 views
0

我需要使用正则表达式模式,但什么是正确的PHP“解码”。我的模式与BBcode“相似”,即['something']'something'可能是“任意长度”,但实际上我怀疑不超过10个字符/数字。什么是正确的PHP语法“unscrambe”,即php - 正则表达式模式

if ($row->xyz =['something']): 
    do this 
else: 
    do that 
endif; 

在此先感谢

+2

什么是一些示例字符串? – 2010-08-15 08:56:58

回答

1

一个基本的正则表达式匹配BBCode的风格标签将是这个样子:

preg_match('/\[[\/]?[A-Za-z0-9]+\]/', $row->xyz) 

这将匹配任何以“[”开头,以“]”结尾,中间有一个或多个字母数字字符(对于结束标签有一个可选的“/”)。注意它有缺陷 - 例如,如果您有一个嵌套的“[...]”在一个更大的“[...]”,它只会抓住内在的一个。 (即[富[栏]将只返回 “[巴]”。)

例子:

<?php 
    $regexp = '/\[[\/]?[A-Za-z0-9]+\]/'; 
    $testString = '[i]An italic string with some [b]bold[/b] text.[/i]'; 
    preg_match_all($regexp, $testString, $result); 
    print_r($result); 
?> 

结果:

array(1) { 
    [0]=> array(4) { 
     [0]=> string(3) "[i]" 
     [1]=> string(3) "[b]" 
     [2]=> string(4) "[/b]" 
     [3]=> string(4) "[/i]" 
    } 
} 

当然,我不知道这是你实际上想要做什么意思是,但这是你说你想要做的。你确定你想找到BBCodes,而不是找到包裹在它们中的字符串吗?

+0

你是对的;) – 2010-08-15 09:10:52

+0

Actualy Stephen找到“包裹的字符串”也会很有趣,但你回答了这个问题 - 谢谢 – user351657 2010-08-15 12:30:33