例如,在使用(getElementsByTagName)时是否可以删除不需要的文本。
这将获取我网站电影的发布日期
$spans = $dom->getElementsByTagName('span');
for($i=0; $i <$spans-> length; $i++){
$itemprop = $spans->item($i)->getAttribute("itemprop");
if ($itemprop == "datePublished"){
if ($spans->item($i)->textContent!='-'){
$res['published'] = trim($spans->item($i)->textContent);
}
}
}
但是发生的事情不是得到这个。
12 July 2011
它取而代之。
12 July 2011 10:47 PM, UTC
我可以添加任何代码以删除此部分。
10:47 PM, UTC
答案 0 :(得分:0)
如果您知道要提取的字符串将是一个日期,那么您可以使用JavaScript日期对象格式化日期,但请参阅此链接以获取更多信息:http://www.elated.com/articles/working-with-dates/
答案 1 :(得分:0)
您可以使用正则表达式来提取值:
preg_match('/^\d+ \w+ \d+/', $spans->item($i)->textContent, $matches);
list(, $published_date) = $matches;
假设日期格式没有改变,那么您应该没有问题。然而,更好的想法是使用DateTime::createFromFormat解析它。这应该是正确的:
$published_date = DateTime::createFromFormat("d M Y h:i A, e", $spans->item($i)->textContent);
修改:根据建议的更改更新了原始代码:
$spans = $dom->getElementsByTagName('span');
for($i=0; $i < $spans->length; $i++){
$itemprop = $spans->item($i)->getAttribute("itemprop");
if ($itemprop == "datePublished"){
if ($spans->item($i)->textContent!='-'){
$text_content = trim($spans->item($i)->textContent);
$published_date = DateTime::createFromFormat("d M Y h:i A, e", $text_content);
$res['published'] = $published_date->format("d M Y");
}
}
}
答案 2 :(得分:0)
正如菲利普所提到的,你可以使用正则表达式。
$pattern = "#([0-9]{2} [a-zA-Z]* [0-9]{4})#i
$subject = "12 July 2013 10:47PM, UTC";
preg_match($pattern, $subject, $matches);
echo $matches[0]; // will find first match
我就是这样做的,虽然我不能保证你的代码中表现更好或更方便。