par
kevin254kl » 06 avr. 2017, 09:11
Merci @rthur,
J'ai crée un service symfony
Code : Tout sélectionner
<?php
namespace socialNetworkBundle\services;
class PreviewLinkInformation
{
private $_contentUrl;
private $_urlValid = false;
public function ContentUrl()
{
return $this->_contentUrl;
}
public function setContentUrl($url)
{
$str = file_get_contents($url);
if(strlen($str)>0)
{
$this->_urlValid = true;
$this->_contentUrl = $str;
}
else
{
$this->_urlValid = false;
}
}
function getTitle(){
if($this->_urlValid)
{
$str = preg_replace('/\s+/', ' ', $this->ContentUrl());
preg_match("/\<title\>(.*)\<\/title\>/i",$this->ContentUrl() ,$title); // ignore case
return $title[1];
}
}
}
puis pour tester avec mon controller, j'utilise un lien
Code : Tout sélectionner
public function indexAction()
{
$utils = $this->container->get('PreviewLinkInformation');
$utils->setContentUrl('http://php.net/manual/fr/domelement.getelementsbytagname.php');
echo $utils->getTitle();exit;
$em = $this->getDoctrine()->getManager();
$items = $em->getRepository('socialNetworkBundle:Item')->findAll();
return $this->render('socialNetworkBundle:Default:index.html.twig', array(
'items' => $items,
));
}
}
Seul problème comme vous le dite il y a certains site qui on très peux de méta [url]view-source:
http://php.net/manual/fr/domelement.get ... agname.php[/url] , du coup comment je peux faire pour récupérer le contenu? également sur un site comme
http://www.20minutes.fr/planete/2044579 ... ire-france pour l'image de la preview il y a si je veux récupérer l'image pour la preview de l'article comment je sais que c'est cette image et pas une autre sachant que les balises ne donne pas trop d'indication?
Merci pour votre aide.
Merci @rthur,
J'ai crée un service symfony
[code]<?php
namespace socialNetworkBundle\services;
class PreviewLinkInformation
{
private $_contentUrl;
private $_urlValid = false;
public function ContentUrl()
{
return $this->_contentUrl;
}
public function setContentUrl($url)
{
$str = file_get_contents($url);
if(strlen($str)>0)
{
$this->_urlValid = true;
$this->_contentUrl = $str;
}
else
{
$this->_urlValid = false;
}
}
function getTitle(){
if($this->_urlValid)
{
$str = preg_replace('/\s+/', ' ', $this->ContentUrl());
preg_match("/\<title\>(.*)\<\/title\>/i",$this->ContentUrl() ,$title); // ignore case
return $title[1];
}
}
}
[/code]
puis pour tester avec mon controller, j'utilise un lien
[code] public function indexAction()
{
$utils = $this->container->get('PreviewLinkInformation');
$utils->setContentUrl('http://php.net/manual/fr/domelement.getelementsbytagname.php');
echo $utils->getTitle();exit;
$em = $this->getDoctrine()->getManager();
$items = $em->getRepository('socialNetworkBundle:Item')->findAll();
return $this->render('socialNetworkBundle:Default:index.html.twig', array(
'items' => $items,
));
}
}[/code]
Seul problème comme vous le dite il y a certains site qui on très peux de méta [url]view-source:http://php.net/manual/fr/domelement.getelementsbytagname.php[/url] , du coup comment je peux faire pour récupérer le contenu? également sur un site comme [url]http://www.20minutes.fr/planete/2044579-20170406-presidentielle-sortie-modernisation-avenir-nucleaire-france[/url] pour l'image de la preview il y a si je veux récupérer l'image pour la preview de l'article comment je sais que c'est cette image et pas une autre sachant que les balises ne donne pas trop d'indication?
Merci pour votre aide.