在我的wordpress帖子内容中,我有一行[yu_TOC title="Short Stories"]
。我正在尝试将其与
preg_match('/\[yu_TOC title=\"(.*?)\"\s*\]/', $content[0], $matchedTitle);
我已经使用error_log(substr($content, 0, 1000));
打印了我想匹配的行。
输出(相关部分)为[yu_TOC title=”Short Stories”]</p>
是否期望引号从"
更改为”
?
为什么我的模式不匹配应匹配的行?
如何解决?
更新:我曾尝试用{} s替换[] s,仍然是同样的问题。
答案 0 :(得分:1)
如果这些引号已更改,并且您还想匹配编码版本,则可以使用alternation来匹配捕获组中的任何一个,然后使用backreference \1
与伴随的闭幕比赛相同的比赛。
您的值在第二个捕获组中,因为第一组用于反向引用。
\[yu_TOC title=("|”)(.*?)\1\s*\]
请注意,您不必逃避"
例如
$content = ["[yu_TOC title=”Short Stories”]</p>"];
preg_match('/\[yu_TOC title=("|”)(.*?)\1\s*\]/', $content[0], $matchedTitle);
print_r($matchedTitle);
输出
Array
(
[0] => [yu_TOC title=”Short Stories”]
[1] => ”
[2] => Short Stories
)