我正在尝试在单词边界内匹配一个字符串。
preg_match('/\bTORUK Cirque du Soleil\b/ims',
'Show: TORUK Cirque du Soleil with Lady Gaga', $matches);
Output: TORUK Cirque du Soleil
这很完美。但是,当字符串中包含引号时,它将无法正常工作。例如,
preg_match('/\bTORUK "Cirque du Soleil"\b/ims',
'Show: TORUK "Cirque du Soleil" with Lady Gaga', $matches);
完全不匹配。在这种情况下,预期输出为TORUK "Cirque du Soleil"
。
尝试使用\B
即非单词边界,但会在没有引号的字符串中中断。
已经创建了fiddle here。
答案 0 :(得分:0)
首先,如@misorude所指出的,您需要指定适当的定界符,例如/
。其次,您可以指定匹配单词边界或引号-类似于以下内容:
preg_match('/\bTORUK "?Cirque du Soleil("|\b)/',
'Show: "TORUK Cirque du Soleil with Lady Gaga"', $matches);
请注意,这涉及您提供的特定示例,您可能需要相应地调整代码。
答案 1 :(得分:0)
您不需要(也不应该使用)\b
。
你有一句话而不是一句话。
preg_match('/TORUK "Cirque du Soleil"/ims',
'Show: TORUK "Cirque du Soleil" with Lady Gaga', $matches);
var_dump($matches);
输出:
array(1) {
[0]=>
string(24) "TORUK "Cirque du Soleil""
}
回答您的评论。
仅在第一个和最后一个单词上使用单词边界:
preg_match('/\bTORUK\b "Cirque du \bSoleil\b"/ims',
'showTORUK "Cirque du Soleil" with Lady Gaga', $matches);
var_dump($matches);