我有从旧网站的HTML页面,有一些地方使用下面的格式列表。
<p><b>Ado’s Kitchen & Bar </b>1143 13th St., 720-465-9063; <a href="http://www.span-ishatthehill.com">span-ishatthehill.com.</a> Laid back restaurant with global menu. Open for breakfast and lunch daily and dinner Mon.-Sat.</p>
<p><strong>Blackbelly Market</strong> 1606 Conestoga St. #3, 303-247-1000; <a href="http://www.blackbelly.com">blackbelly.com</a>. Locavore dining, butchery and bar. Open daily for happy hour and dinner; see website for market hours.</p>
我将使用这些数据列表页面。所以我需要得到正确的格式的数据
$arr = [
'name'=>'', //in <b> tag
'address'=>'', //after <b> tag
'phone'=>'', //after address. address is end with comma
'website'=>'', //after number number, number is ended with semicolon and in a tag
'description'=>'', //after <a> tag
]
我尝试使用preg_match,但无法提取标签中没有的内容,例如地址或电话号码等。
$htmlContent = 'content here';
preg_match('/<b>(.*?)<\/b>/s', $htmlContent, $match); /*for address */
preg_match('/< strong >(.*?)<\/strong >/s', $htmlContent, $match); /*for address */
preg_match('/<a href="(.*?)">(.*?)<\/a>/s', $htmlContent, $match); /*for website */
使用此代码我可以得到网站地址或地址(从标签),但如何得到电话,地址和其他细节?
谢谢
1条答案
按热度按时间3pmvbmvn1#
您可以使用单个正则表达式来捕获数据。就像这样:
然后你可以像这样检索匹配:
如果你想更详细地了解这个正则表达式是如何工作的,这里是链接:[1]:https://regex101.com/r/EYpXwi/1