我目前正在处理preg_match_all
我正试图编写一个程序,获取强力球号码并将其插入mysql数据库以进行进一步操作。尽管我希望将它们作为日期、白色数字、强力球插入一行,但在我解决标签问题后,我会集中精力。我使用了一些来自实际powerball网站的源代码作为$url变量。
这是我的代码:
$url='localhost/lotto/test.html';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);
$resultDate = curl_exec($ch);
$resultNum = curl_exec($ch);
$resultPb = curl_exec($ch);
curl_exec($ch);
$link1 = new mysqli("localhost", "root", "", "lotto");
if($link1 === false){
die("ERROR: could not connect. " . mysqli_connect_error());
}
else {
echo "Connection Established </br>";
}
preg_match_all("/<b>(.+?)<'/font>/", $resultDate, $dates);
for ($d=0; $d<count($resultDate); $d++) {
preg_match_all("/white_40.gif'" class='"cssNumber-24'">(.+?)<'/td>/", $resultNum, $numbers);
for($n=0; $n<count($resultNum); $n++) {
preg_match_all("/red_40'.gif'" class='"cssNumber-24'">(.+?)<'/td>/", $resultPb, $pb);
for($p=0; $p<count($resultPb); $p++) {
foreach(array($dates[$d]) as $date) {
for ($q=0;$q<count($date);$q++){
foreach(array($numbers[$n]) as $number) {
for ($i=0; $i<count($number); $i++) {
foreach (array($pb[$p]) as $power) {
for ($w=0;$w<count($power);$w++){
$sql = "INSERT INTO Winners (dates,white,power) VALUES ('$date[$q]','$number[$i]','$power[$w]')";
if(mysqli_query($link1, $sql)){
echo "Data added successfully. </br>";
}
else {
echo "ERROR: Could not execute $sql. " . mysqli_error($link1);
}
}
}
}
}
}
}
mysqli_close($link1);
}
}
}
curl_close($ch);
所需结果:11/12/2013
插入mysql
不希望的结果:<b>11/12/2013</font>
插入mysql而不是
注意:有成千上万的日期。另请注意:我是php的新手,所以对批评要宽容一些
您的preg_match_all正则表达式当前为:
preg_match_all("/'<b'>(.*?)'<'/font'>/",$resultDate, $dates);
其具有完全不需要的多余转义字符。将其缩减为:
preg_match_all("/<b>(.*?)<''/font>/",$resultDate, $dates);
并且这个(即您当前的regex)似乎可以按照您的意愿工作,请查看https://regex101.com/r/sP6lH7/1