2015-07-17 1 views
0

У меня есть вопрос. Как я могу получить текст между тегами в html ??Как я могу получить текст из тегов?

<ReviewsClientModel xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Microsoft.OneStore.Site.Models"> 
<Items> 
<ReviewsClientModel.ReviewClientModel> 
<HelpfulNegative>0</HelpfulNegative> 
<HelpfulPositive>2</HelpfulPositive> 
<IsPublished>true</IsPublished> 
<IsTakenDown>false</IsTakenDown> 
<Rating xmlns:d4p1="http://schemas.datacontract.org/2004/07/Microsoft.OneStore.Site.Models.ViewModels"> 
<ReviewId>5ce5dc85-466d-a1cc-efe7-70bdd5183dfb</ReviewId> 
<ReviewText>I downloaded this app it had someone in his eyes its kinda black so I don't know who it is.my cousin thinks its not scary but I get creeped out wen I saw him myself. Whoevers not scared then just wow just wow. FOR SAFETY DONT DOWNLOAD</ReviewText> 
<SubmittedDateTime>2015-06-25T20:13:05.633</SubmittedDateTime> 
<Title>FOR SAFETY DON"T PLAY</Title> 
<UserId>985157380267961</UserId> 
<UserName>natalie</UserName> 
<ViolationsFound>false</ViolationsFound> 
</ReviewsClientModel.ReviewClientModel> 

Например, я хотел бы получить "5ce5dc85-466d-a1cc-efe7-70bdd5183dfb". Я попробовал:

public function getXpath($str) 
    { 
     \DB::connection('mongodb')->disableQueryLog(); 
     libxml_use_internal_errors(true); 
     $str = str_replace("\0", '', $str); 
     $dom = new \DomDocument(); 
     $dom->loadHTML('<?xml encoding="UTF-8">' . $str); 
     return new \DomXPath($dom); 
    } 
$xpath = $this->getXpath($str); 
$tmpCommId = $xpath->query("//ReviewId"); 
      $comm_id = trim($tmpCommId->item($j)->nodeValue); 

Я Curl, чтобы загрузить веб-сайт, и я сохранил в $ ул.

+0

Хорошо, я знаю, как я должен это делать. Я сделал это, после того, как я использовал Curl, $ str = json_decode ($ str, true); , и я получаю массив с именем key = tag, а value = text между тегами. – Khurian

+0

Ваш вопрос говорит «в HTML», но ваш пример показывает XML. Вы имеете в виду XML? – LarsH

+0

Да, я имею в виду XML, мой друг рассказал мне о разности HTML и XML, и теперь я знаю, что должен использовать другие инструменты. В любом случае спасибо за ответы. – Khurian

ответ

2

Этот ответ предполагает, что вы хотите использовать Javascript.

Вы можете разобрать html с помощью Pure JavaScript HTML Parser.

Проверьте этот блог для документации по библиотеке. Может быть, немного устарели.

EDIT:

LarsH сообщил мне, что вы хотите в XML-скребок в PHP. Хотя я должен был проверить ваш пример кода, чтобы на самом деле проверить, что это было, это действительно поможет напомнить людям, в чем вы его нуждаетесь.

Что касается ответа, то я не очень хорошо знаком с php, DOM должен быть способный справиться с этим довольно хорошо.

Кроме того, here - это ответ из прошлого, который является довольно хорошим примером использования DOM для разбора HTML. Должно быть достаточно легко использовать его вместо XML. Надеюсь, это поможет.

+0

Оказывается, он хочет анализировать XML, а не HTML. Этот ответ по-прежнему работает? Кроме того, он, кажется, использует PHP. – LarsH

+0

@LarsH Да, я не заметил, что он хотел использовать XML. Обновление моего ответа сейчас. Спасибо, что дали мне знать. – kirkpatt