Php 如何在两个已知字符串之间匹配一个字符串,而不使用正则表达式?

Php 如何在两个已知字符串之间匹配一个字符串,而不使用正则表达式?,php,regex,Php,Regex,我想在另外两个字符串之间提取一个字符串。字符串恰好位于HTML标记中,但我希望避免讨论是否应该使用regex解析HTML(我知道我不应该这样做,并且已经用stristr()解决了这个问题,但我想知道如何使用正则表达式来解析HTML) 字符串可能如下所示: …uld在下面选择和申请。主要地点:美国华盛顿西雅图旅行:是的,75%的时间工作类型:标准地区:美国服务线:ASL-商业智能工作:商业智能能力组:Con/Sol-BI&CLOC USA 我对主要位置感兴趣:美国华盛顿西雅图,想摘录“美国华盛顿西

我想在另外两个字符串之间提取一个字符串。字符串恰好位于HTML标记中,但我希望避免讨论是否应该使用regex解析HTML(我知道我不应该这样做,并且已经用stristr()解决了这个问题,但我想知道如何使用正则表达式来解析HTML)

字符串可能如下所示:

…uld在下面选择和申请。


主要地点:美国华盛顿西雅图
旅行:是的,75%的时间
工作类型:标准
地区:美国服务线:ASL-商业智能
工作:商业智能
能力组:Con/Sol-BI&C
LOC USA

我对
主要位置感兴趣:美国华盛顿西雅图
,想摘录“美国华盛顿西雅图”


我尝试了
”(?您使用了
/
作为正则表达式分隔符,因此如果您想逐字匹配它或使用其他分隔符,则需要将其转义

 preg_match("/(?<=<b>Primary Location</b>:)(.*?)(?=<br/>)/", $description,$matches);

preg_match(“/”)(?谢谢。这是一个很好的观点,可以避免错误,但它仍然不匹配任何内容。谢谢。它在本地无法工作-但可能是因为其他原因,所以我会接受答案。原来simplepie正在将
转换为
,所以我没有得到匹配项。Grrrr
preg_match("/(?<=<b>Primary Location<\/b>:)(.*?)(?=<br\/>)/", $description,$matches);
preg_match("~(?<=<b>Primary Location</b>:)(.*?)(?=<br/>)~", $description,$matches);
$description = "uld select “Apply” below.<br/><br/><b>Primary Location</b>: United States-Washington-Seattle<br/><b>Travel</b>: Yes, 75 % of the Time <br/><b>Job Type</b>: Standard<br/><b>Region</b>: US Service Lines: ASL - Business Intelligence<br/><b>Job</b>: Business Intelligence<br/><b>Capability Group</b>: Con/Sol - BI&C<br/><br/>LOC:USA";
preg_match("~(?<=<b>Primary Location</b>:)(.*?)(?=<br/>)~", $description, $matches);

print_r($matches);
$description = "uld select “Apply” below.<br/><br/><b>Primary Location</b>: United States-Washington-Seattle<br/><b>Travel</b>: Yes, 75 % of the Time <br/><b>Job Type</b>: Standard<br/><b>Region</b>: US Service Lines: ASL - Business Intelligence<br/><b>Job</b>: Business Intelligence<br/><b>Capability Group</b>: Con/Sol - BI&C<br/><br/>LOC:USA";
preg_match("~(?<=<b>Primary Location</b>:).*?(?=<br/>)~", $description, $matches);

print($matches[0]);