我总是使用preg_match
,它总能正常工作,
但今天我试图在两个html标签<code: 1>DATA</code>
我遇到了一个问题,我的代码解释道:
function findThis($data){
preg_match_all("/\<code: (.*?)\>(.*?)\<\/code\>/i",$data,$conditions);
return $conditions;
}
// plain text
// working fine
$data1='Some text...Some.. Te<code: 1>This is a php code</code>';
//A text with a new lines
// Not working..
$data2='some text..
some.. te
<code: 1>
This is a php code
..
</code>
';
print_r(findThis($data1));
// OUTPUT
// [0][0] => <code: 1>This is a php code</code>
// [1][0] => 1
// [2][0] => This is a php code
print_r(findThis($data2));
//Outputs nothing!
答案 0 :(得分:6)
这是因为。 PHP中的字符是除换行符之外的任何内容的通配符。包括换行符在内的例子会破裂。你想要做的是在模式的末尾添加“s”标志,这会修改。绝对匹配所有内容(包括换行符)。
/\<code: (.*?)\>(.*?)\<\/code\>/is
见这里:http://www.php.net/manual/en/regexp.reference.internal-options.php