J'essaie de charger un fichier XML à partir d'un nom de domaine différent sous la forme d'une chaîne. Tout ce que je veux, c'est un tableau du texte dans les balises < title> </title> du fichier xml, donc je pense que puisque j'utilise php4, le plus simple serait de faire une regex dessus pour les obtenir. Quelqu'un peut-il expliquer comment charger le XML en tant que chaîne? Merci!PHP: comment charger un fichier à partir d'un serveur différent sous forme de chaîne?
Répondre
Vous pouvez utiliser cURL comme dans l'exemple ci-dessous. Je devrais ajouter que l'analyse XML basée sur regex n'est généralement pas une bonne idée, et vous feriez peut-être mieux d'utiliser un vrai parser, surtout si cela devient plus compliqué.
Vous pouvez également ajouter des modificateurs de regex pour le faire fonctionner sur plusieurs lignes, etc., mais je suppose que la question est plus sur l'extraction du contenu dans une chaîne.
<?php
$curl = curl_init('http://www.example.com');
//make content be returned by curl_exec rather than being printed immediately
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($curl);
if ($result !== false) {
if (preg_match('|<title>(.*)</title>|i', $result, $matches)) {
echo "Title is '{$matches[1]}'";
} else {
//did not find the title
}
} else {
//request failed
die (curl_error($curl));
}
Première utilisation file_get_contents ('http://www.example.com/');
pour obtenir le fichier, insérer dans var. après le xml Parse le lien est http://php.net/manual/en/function.xml-parse.php ont par exemple dans les commentaires
J'ai cette fonction comme un extrait:
function getHTML($url) {
if($url == false || empty($url)) return false;
$options = array(
CURLOPT_URL => $url, // URL of the page
CURLOPT_RETURNTRANSFER => true, // return web page
CURLOPT_HEADER => false, // don't return headers
CURLOPT_FOLLOWLOCATION => true, // follow redirects
CURLOPT_ENCODING => "", // handle all encodings
CURLOPT_USERAGENT => "spider", // who am i
CURLOPT_AUTOREFERER => true, // set referer on redirect
CURLOPT_CONNECTTIMEOUT => 120, // timeout on connect
CURLOPT_TIMEOUT => 120, // timeout on response
CURLOPT_MAXREDIRS => 3, // stop after 3 redirects
);
$ch = curl_init($url);
curl_setopt_array($ch, $options);
$content = curl_exec($ch);
$header = curl_getinfo($ch);
curl_close($ch);
//Ending all that cURL mess...
//Removing linebreaks,multiple whitespace and tabs for easier Regexing
$content = str_replace(array("\n", "\r", "\t", "\o", "\xOB"), '', $content);
$content = preg_replace('/\s\s+/', ' ', $content);
$this->profilehtml = $content;
return $content;
}
qui renvoie le code HTML sans sauts de ligne, des onglets, des espaces multiples, etc, seulement 1 ligne.
Alors maintenant, vous faites cela preg_match:
$html = getHTML($url)
preg_match('|<title>(.*)</title>|iUsm',$html,$matches);
et $ matches [1], les informations dont vous avez besoin.
Si vous chargez un fichier XML bien formé, ignorer l'analyse syntaxique à base de caractères, et utiliser les fonctions DOM:
$d = new DOMDocument;
$d->load("http://url/file.xml");
$titles = $d->getElementsByTagName('title');
if ($titles) {
echo $titles->item(0)->nodeValue;
}
Si vous ne pouvez pas utiliser DOMDocument :: load() en raison de la façon dont php est mis en place, la boucle d'utilisation pour saisir le fichier, puis faire:
$d = new DOMDocument;
$d->loadXML($grabbedfile);
...
- 1. Comment puis-je charger un fichier de configuration à partir d'un assemblage différent dans asp.net?
- 2. Comment stocker parse_url sous forme de chaîne en PHP?
- 3. Possible d'utiliser MovieClipLoader() pour charger un swf à partir d'un serveur différent?
- 4. Comment puis-je obtenir un type générique à partir d'une représentation sous forme de chaîne?
- 5. Lire l'objet fichier sous forme de chaîne en python
- 6. Chaîne d'entrée compressée sous forme de chaîne
- 7. Télécharger un fichier à partir d'un serveur distant ... (PHP)
- 8. Comment charger un fichier org.w3c.dom.Document à partir de XML dans une chaîne?
- 9. php regex lire sous forme de sélection
- 10. Ajax: Charger du code XML à partir d'un domaine différent?
- 11. Représentation sous forme de chaîne de time_t?
- 12. Pour télécharger un fichier Excel sous forme de clob
- 13. Comment mapper un chemin de fichier à partir d'un emplacement de dossier différent facilement?
- 14. Cryptage du tableau sous forme de chaîne
- 15. Serialize [Flags] énumération sous forme de chaîne
- 16. stocke le premier octet sous forme de chaîne à partir du flux réseau
- 17. Python: Lire un fichier (à partir d'un serveur externe)
- 18. Comment charger un fichier JAR à l'exécution
- 19. C# coulée au type obtenu à partir typename sous forme de chaîne
- 20. Comment POSTER un fichier sur un serveur REST sans écrire le fichier sur disque avec PHP?
- 21. Lecture de scripts php à partir du fichier php
- 22. Exporter des données sous forme de fichier largeur fixe à partir de SQL Server 2005
- 23. Comment charger viewController à partir d'un fichier nib
- 24. Comment charger un fichier js avec javascript
- 25. chaîne remplacer dans un fichier avec php
- 26. Formater un nombre sous la forme d'une chaîne
- 27. Jeu de caractères différent sur un serveur différent?
- 28. stripping un texte à partir d'une forme
- 29. Comment charger et exécuter un fichier lua à partir d'un autre fichier lua
- 30. Comment lire un fichier mp3 depuis un serveur différent dans .NET 2.0 (C#/vb.net)?
Merci vous, je me suis cette erreur: « avertissement: file_get_contents(): accès aux fichiers URL est désactivé dans la configuration du serveur. » Y at-il un moyen de le faire avec cURL Je sais que c'est activé. Merci! –
vous pouvez l'utiliser // URL fictive vers un fichier existant sans données (fichier 0 octet) $ url = 'http://www.example.com/empty_fichier.txt'; $ curl = curl_init(); curl_setopt ($ curl, CURLOPT_URL, $ url); curl_setopt ($ curl, CURLOPT_RETURNTRANSFER, true); curl_setopt ($ curl, CURLOPT_HEADER, false); // exécuter et renvoyer une chaîne (cela devrait être une chaîne vide '') $ str = curl_exec ($ curl); curl_close ($ curl); // la valeur de $ str est en fait bool (true), pas la chaîne vide '' var_dump ($ str); –
je le prends de http://php.net/manual/fr/function.curl-exec.php –