我使用 TCPDF 生成一些复杂的 PDF,所以问题出在 PDF 中,而不是标准网页中我试图在 2 个标签之间获取文本,包括两个标签:[#SCHANGE#]和[#ECHANGE#]。我正在使用这个正则表达式:preg_match('/(?:\[#SCHANGE#\]((?:.*?\r?\n?)*)\[#ECHANGE#\])+/m', $textV, $StartEndChange);$textV 是来自 foreach 循环的动态值,例如:foreach($text as $textV){ //some code here..}内部可能有不同的情况,例如:$text = array ( "0" => "[#SCHANGE#] same text [#ECHANGE#]" //This is okay, regex works in this case) ;但是当$text只有一个标签时,这个正则表达式不起作用,然后我遇到了这种情况:$text = array ( "0" => "[#SCHANGE#]same text", "1" => "some text", "2" => "some text", "3" => "some text", "4" => "some text", "5" => "some text", "6" => "some text", "7" => "some text [#ECHANGE#]") ;那么:如果标签不在同一个文本中,我如何获取包括两个标签在内的 2 个标签之间的文本?我无法分解数组,因为里面的所有文本都已$text格式化,并且可以与上一个或下一个不同的方式打印
3 回答
慕雪6442864
TA贡献1812条经验 获得超5个赞
我会先对数组进行内爆,然后在字符串中搜索:
$text = array (
"[#SCHANGE#]same text",
"some text",
"some text",
"some text",
"some text",
"some text",
"some text",
"some text [#ECHANGE#]",
"blah blah",
"[#SCHANGE#]other text[#ECHANGE#]"
) ;
$all_text = implode("\n", $text);
preg_match_all('/\[#SCHANGE#\][\s\S]+?\[#ECHANGE#\]/', $all_text, $matches);
print_r($matches);
输出:
Array
(
[0] => Array
(
[0] => [#SCHANGE#]same text
some text
some text
some text
some text
some text
some text
some text [#ECHANGE#]
[1] => [#SCHANGE#]other text[#ECHANGE#]
)
)
- 3 回答
- 0 关注
- 159 浏览
添加回答
举报
0/150
提交
取消