我一直在制作一个信件编制系统(为了节省人们填写问卷后的时间),并且在项目结束时我们发现了一个错误。长话短说,没有这个正则表达式就需要花费很多时间来修复 - 这就是为什么我要求你的帮助!
我们有一些文字包含以下内容......
"<k>This is the start of the paragraph
This is some more of the paragraph.
And some more";
我基本上需要一个可以搜索开始标记的正则表达式“<k>
”,以及它遇到的第一个新行“\ r \ n”?然后将内容插入到我可以使用的变量中(删除<k>
但新的行代码“\ r \ n”,留在原位)。
我正在使用PHP,文本(如上例所示)存储在MySQL中。
请帮忙!
我保证在修复此错误后我会正确学习这些内容! :)
答案 0 :(得分:1)
如果你使用5.3,你可以使用这样的闭包:
$text = "<k>This is the start of the paragraph
This is some more of the paragraph.
And some more";
$matches = array();
$text = preg_replace_callback('/<k>(.*)$/m', function($match) use (&$matches){
$matches[] = $match[1];
}, $text);
var_dump($text,$matches);
输出是:
string '
This is some more of the paragraph.
And some more' (length=52)
array
0 => string 'This is the start of the paragraph' (length=34)
我假设文本中可能有多个<k>
标记,因此,我将标记后面的所有文本放入一个名为matches的数组中。
作为另一个例子......带有以下输入:
$text = "<k>This is the start of the paragraph
Line 2 doesn't have a tag...
This is some more <k>of the paragraph.
Line 4 doesn't have a tag...
<k>And some more";
输出结果为:
string '
Line 2 doesn't have a tag...
This is some more
Line 4 doesn't have a tag...
' (length=78)
array
0 => string 'This is the start of the paragraph' (length=34)
1 => string 'of the paragraph.' (length=17)
2 => string 'And some more' (length=13)
答案 1 :(得分:0)
/^<k>(\w*\s+)$/
可能会奏效。