2012-07-16T21 :00:00を
<abbr title="2012-07-16T21:00:00" class="dtstart">Monday, July 16th, 2012</abbr>
しかし、私はいくつかの困難を抱えています。これは私がしたことです
preg_match('/<abbr title="(.*)" \/>/i', $file_string, $time);
$time_out = $time[1];
使用する
preg_match('/<abbr title="([^"]*)" \/>/i', $file_string, $time);
したがって、マッチャーは最初に停止します<< ">>([^"]は "以外の意味です)
また
preg_match('/<abbr title="([0-9T:-]*)" \/>/i', $file_string, $time);
より正確には、キャッチする必要があるものだけを含むグループを使用します。(「は除外されていることに注意してください)
これに正規表現を使用するのが最善のアプローチではないと思いますが、状況によっては問題ない場合があります。
正規表現を使用している場合、これが必要です。
preg_match('/<abbr title="([^"]*)"/i', $file_string, $time);
ここで実際に見てください:http://viper-7.com/qZu9tj
Try it this way instead of regex:
$dom = new DOMDocument;
$dom->loadXML($file_string);
$abbr = simplexml_import_dom($dom);
$time;
foreach ($abbr[0]->attributes() as $key => $value)
{
if ($key == 'title')
{
$time = $value;
break;
}
}
echo $time;
Regex can be a pain for dealing with this sort of thing. Better to use a parser.
最良の方法は、PHP のDOMのような HTML パーサーを使用することです。
<?php
$html = <<<HTML
<abbr title="2012-07-16T21:00:00" class="dtstart">Monday, July 16th, 2012</abbr>
HTML;
$dom = new DOMDocument();
$dom->loadHTML($html);
$abbr = $dom->getElementsByTagName("abbr")->item(0);
$title = $abbr->getAttribute("title");
echo $title;
あなたのデータがそのように見えなくても、それはうまくいきます:
title
。"
、'
、またはなし) に関係なく。したがって、RegEx は使用しないでください。我慢できなくて<center>
手遅れです。