preg_match转义为反斜杠

时间:2016-05-09 10:15:43

标签: php html preg-match

我正在尝试从HTML SPAN元素中获取值:

<span class=\"date-display-single\">1462732200</span>

我已经尝试了下面提到的方法,但似乎上面提到的HTML元素中使用了后退问题。

我开始知道使用4 backslashes可以帮助我,但事实并非如此!任何其他方法来实现上面提到的HTML元素内的值。即 1462732200

<span class=\"date\-display\-single\">(.*?)<\/span>

3 个答案:

答案 0 :(得分:2)

不要通过preg_match()解析HTML,请使用

PHP DOM Document Class

$html = '<span class=\"date-display-single\">1462732200</span>';
// a new dom object 
$dom = new domDocument('1.0', 'utf-8'); 
// load the html into the object ***/ 
$dom->loadHTML($html); 
//discard white space 
$dom->preserveWhiteSpace = false; 
$hTwo= $dom->getElementsByTagName('span'); // here u use your desired tag
echo $hTwo->item(0)->nodeValue; 

答案 1 :(得分:0)

  1. 这是另一篇可能会对此问题有所了解的帖子:
  2. Preg match text in php between html tags

    1. 另一种选择也可以使用实际的解析器来解析您的数据,例如simplehtmldom。只是把它扔到那里,因为我知道根据情况,它可以帮助很多
    2. http://simplehtmldom.sourceforge.net

答案 2 :(得分:0)

第三个(或第四个,取决于你如何计算)是使用strpos。

$str = '1111<span class=\"date-display-single\">1462732200</span>22222';
$pos = strpos($str, '<span class=\"date-display-single\">');
$pos2= strpos($str, '</span>');

$str2 = strip_tags(substr($str, $pos,$pos2));
echo $str2;

但是对象操纵器给了你最好的答案。去吧。