This website在一个列表中列出了250多个课程。我想得到每个课程的名称,并使用PHP将其插入我的mysql数据库。课程列表如下:
<td> computer science</td>
<td> media studeies</td>
…
有没有办法在PHP中做到这一点,而不是我有疯狂的数据输入噩梦?
答案 0 :(得分:4)
正则表达式效果很好。
$page = // get the page
$page = preg_split("/\n/", $page);
for ($text in $page) {
$matches = array();
preg_match("/^<td>(.*)<\/td>$/", $text, $matches);
// insert $matches[1] into the database
}
有关preg_match的信息,请参阅the documentation。
答案 1 :(得分:2)
您可以使用此HTML解析php库来实现此目的:http://simplehtmldom.sourceforge.net/
答案 2 :(得分:2)
如何解析HTML已经无数次asked and answered了。虽然(针对您的特定UseCase)正则表达式将起作用,但对于此任务,use a proper parser通常更好且更可靠。以下是DOM:
的使用方法$dom = new DOMDocument;
$dom->loadHTMLFile('http://courses.westminster.ac.uk/CourseList.aspx');
foreach($dom->getElementsByTagName('td') as $title) {
echo $title->nodeValue;
}
对于inserting the data进入MySql,您应该使用mysqli扩展名。 Examples are plentiful on StackOverflow.所以请使用搜索功能。
答案 3 :(得分:0)
我遇到了同样的问题。 这是一个很好的类库,名为html dom http://simplehtmldom.sourceforge.net/。 这就像jquery
答案 4 :(得分:0)
只是为了好玩,这里有一个快速的shell脚本来做同样的事情。
curl http://courses.westminster.ac.uk/CourseList.aspx \
| sed '/<td>\(.*\)<\/td>/ { s/.*">\(.*\)<\/a>.*/\1/; b }; d;' \
| uniq > courses.txt