我必须从返回HTML
的函数接收数据。最好的解决方案是编辑代码以更好地工作,但它是实时代码而不是我的代码。我无法编辑这个。
因此,我可以得到一些指导来帮助实现我需要的东西:
返回的 html:
<a href="/newsitems">News</a>
<a href="/news/roman-catapults/16465">Roman Catapults</a>
<a href="/news/year-3-roman-experience/13835">Year 3 Roman Experience</a>
<a href="/news/year-3-dewa-roman-experience/15746">Year 3 Dewa Roman Experience</a>
<a href="/news/science-week-day-1/15423">Science Week</a><a href="/news/world-book-day/15104">World Book Day</a>
<a href="/news/year-6-trip-to-the-lion-salt-works/15762">Year 6 trip to the Lion Salt Works</a><a href="/news/learning-logs/13839">Learning Logs</a>
<a href="/news/working-together/13838">Working Together</a>
<a href="/news/learning-logs/13837">Learning Logs</a>
<a href="/news/year-2-curriculum-map-for-autumn-2/13377">Year 2 Curriculum Map for Autumn 2</a>
我知道有这样的方法
- 正则表达式
- 爆炸
- 破灭
在这方面的知识并不是最好的,需要一点指导来帮助我学习。
我要实现的目标:
- 尝试将每行分成一个数组
- 从链接和链接中获取文本
- 例如,第一行
array => (title => "News", link => "/newsitems")
原因:
我无法编辑返回此HTML
的函数,我想比返回的数据更好地显示 HTML。
使用 PHP HTML 解析器将是解决您问题的最强大的解决方案。但是,如果您只想快速一次性将示例 html 分解为数组,则可以在新行上使用explode()
,如下所示:
$html = '<a href="/newsitems">News</a>
<a href="/news/roman-catapults/16465">Roman Catapults</a>
<a href="/news/year-3-roman-experience/13835">Year 3 Roman Experience</a>
<a href="/news/year-3-dewa-roman-experience/15746">Year 3 Dewa Roman Experience</a>
<a href="/news/science-week-day-1/15423">Science Week</a><a href="/news/world-book-day/15104">World Book Day</a>
<a href="/news/year-6-trip-to-the-lion-salt-works/15762">Year 6 trip to the Lion Salt Works</a><a href="/news/learning-logs/13839">Learning Logs</a>
<a href="/news/working-together/13838">Working Together</a>
<a href="/news/learning-logs/13837">Learning Logs</a>';
$array = explode("n",$html);
$array = array_map('trim',$array);
如果要进一步解析数组项,以便拆分链接和元素文本,可以执行以下操作:
$final = array();
foreach($array as $v){
$v = trim($v);
// capture things in the href attribute and within the tags
preg_match('/href="([^"]*)">([^<]*)</a>/',$v,$matches);
$final[] = array(
'originalelement' => $v,
'url' => $matches[1],
'text' => $matches[2]
);
}
$final
现在将拥有您要查找的内容,如下所示:
array(
array(
"originalelement" => "<a href="/newsitems">News</a>",
"url" => "/newsitems",
"text" => "News"
),
array(
"originalelement" => "<a href="/news/roman-catapults/16465">Roman Catapults</a>",
"url" => "/news/roman-catapults/16465",
"text" => "Roman Catapults"
)
)
请记住,此解决方案将适用于您在此处列出的 html,但 html 是一个狡猾的野兽,如果<a>
元素具有嵌套元素(例如 b 或 span(,则正则表达式不会捕获这些元素。