使用正则表达式PHP获取值

使用正则表达式PHP获取值,php,regex,Php,Regex,我需要使用正则表达式从该HTML字符串中获取以下值: 获得“海景”、“海滨”、“游泳池”、“空调”、“洗衣机”、“烘干机”、“商店附近”、“停车场”、“家具齐全”、“有线/卫星电视”、“互联网连接”、“烧烤”、“封闭社区”、“学校附近”、“设备齐全”、“阳台”、“保安”、“围栏”、“私人花园”的价值: HTML字符串 <div class='list2'> Distance to Beach: <span class='detail'>One block</span

我需要使用正则表达式从该HTML字符串中获取以下值:

获得“海景”、“海滨”、“游泳池”、“空调”、“洗衣机”、“烘干机”、“商店附近”、“停车场”、“家具齐全”、“有线/卫星电视”、“互联网连接”、“烧烤”、“封闭社区”、“学校附近”、“设备齐全”、“阳台”、“保安”、“围栏”、“私人花园”的价值:

HTML字符串

<div class='list2'>
Distance to Beach: <span class='detail'>One block</span><br />
Ocean View: <span class='detail'>no</span><br />
Beachfront: <span class='detail'>no</span><br />
Pool: <span class='detail'>yes</span><br />
Air Conditioning: <span class='detail'>yes</span><br />
Washer: <span class='detail'>yes</span><br />
Dryer: <span class='detail'>yes</span><br />
Close to Shops: <span class='detail'>yes</span><br />
Parking: <span class='detail'>yes</span><br />
Fully Furnished: <span class='detail'>yes</span>
</div>
    <div class='list2'>
Cable/Satellite TV: <span class='detail'>yes</span><br />
Internet Connection: <span class='detail'>yes</span><br />
Barbecue: <span class='detail'>no</span><br />
Gated Community: <span class='detail'>yes</span><br />
Close to Schools: <span class='detail'>yes</span><br />
Linens Provided: <span class='detail'>yes</span><br />
Fully Equipped: <span class='detail'>yes</span><br />
Balcony: <span class='detail'>yes</span><br />
Security: <span class='detail'>yes</span><br />
Fenced: <span class='detail'>yes</span><br />
Private Garden: <span class='detail'>no</span>
</div>

到海滩的距离:一个街区
海景:否
海滨:否
池:是
空调:是
洗衣机:是
干燥器:是
靠近商店:是
停车:是
家具齐全:是的 有线/卫星电视:是
互联网连接:是
烧烤:否
封闭社区:是
靠近学校:是
提供的亚麻制品:是
装备齐全:是
阳台:是的
安全性:是
围栏:是
私人花园:没有
我尝试了以下操作,但它返回了此数组

$features_tax = "/(.*?): <span class='detail'>yes<\/span>/";
    preg_match_all($features_tax, $web, $web_list);
$features_tax=“/(*?):yes/”;
preg_match_all($features_tax,$web,$web_list);
返回:

array (size=16)
  0 => string '<!DOCTYPE HTML> <html lang='en'> <head> <meta charset='UTF-8' /><base href='http://www.alliancecostarica.com/' />  <link href='./files/acr.css' type='text/css' rel='stylesheet' /><link rel='stylesheet' type='text/css' href='./files/gallery.css' />      <link rel='stylesheet' type='text/css' href='./files/elastislide.css' /> <meta name='viewport' content='width=device-width, initial-scale=1' /> <title></title> <meta name='description' content='' />  <meta name='keywords' content='' /> </head> <body> <div class='... (length=5252)
  1 => string '<br /> Air Conditioning' (length=23)
  2 => string '<br /> Washer' (length=13)
  3 => string '<br /> Dryer' (length=12)
  4 => string '<br /> Close to Shops' (length=21)
  5 => string '<br /> Parking' (length=14)
  6 => string '<br /> Fully Furnished' (length=22)
  7 => string ' </div>  <div class='list2'> Cable/Satellite TV' (length=47)
  8 => string '<br /> Internet Connection' (length=26)
  9 => string '<br /> Barbecue: <span class='detail'>no</span><br /> Gated Community' (length=69)
  10 => string '<br /> Close to Schools' (length=23)
  11 => string '<br /> Linens Provided' (length=22)
  12 => string '<br /> Fully Equipped' (length=21)
  13 => string '<br /> Balcony' (length=14)
  14 => string '<br /> Security' (length=15)
  15 => string '<br /> Fenced' (length=13)
数组(大小=16)

0=>string'如果单词前面总是有一个

标记,则可以使用此模式:

$pattern=“>(*?):(?:一个块|是|否)/”;

在您的示例中,此模式还包括
标记内的不同值。

。有线/卫星电视仍然带有html标签
“有线/卫星电视”
。你知道为什么以及如何避免它吗?还可以解释这是如何读取的
(?:一个块|是|否)
。一个街区意味着什么?感谢此块匹配您在上面发布的HTML示例中的
标记内的可能值。关于您对“有线/卫星电视”的第一条评论。1.不,我不知道为什么!2.我已经修改了我的答案,并删除了模式开头的斜杠
/
,它现在也应该与“有线/卫星电视”部分匹配。