par
Weezy » 13 juil. 2016, 11:43
Bonjour à tous,
Cela fait un moment que je bloque sur ce problème, je vous explique:
Je veux récupérer deux parties d'un code html, la partie entre <head></head et la partie entre <body></body>.
J'ai commencé à essayer d'extraire la partie compris entre les HEAD.
voici le code complet de la page html:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script src="wordcloud.js/src/wordcloud.js"></script>
</head>
<body>
<style>
canvas {
padding-left: 100;
margin-top: 150;
width: 600px;
}
</style>
<canvas id="theCanvas" width="1000" height="1000"></canvas>
<script>
///////fonction ////////
function load() {
if (window.XMLHttpRequest) {
request = new XMLHttpRequest();
}
else if (window.ActiveXObjet) {
request = new ActiveXObjet("Microsoft.XMLHTTP");
}
else {
return;
}
request.open('GET', 'nuageMot4.txt', false); // Synchro
request.send(null);
return request.responseText;
}
////////////////////////////////////////////////////////////////////////////////
var canvas=document.getElementById('theCanvas');
var context=canvas.getContext('2d');
var text = load();
var pattern = /((^|[^a-z0-9àáâãäåçèéêëìíîïðòóôõöùúûüýÿ]))/gi;
textWithoutSpecialChars = text.replace(pattern, " " );
var patternWord=/[\wàáâãäåçèéêëìíîïðòóôõöùúûüýÿ]{2,}/gi;
var words = textWithoutSpecialChars.match(patternWord);
var newArray= new Array();
for(i = 0; i<words.length; i++){
var index = words[i];
if(typeof newArray[index] != "undefined"){
newArray[index]++;
}
else{
newArray[index] = 1;
}
}
//compare
function compare(a, b) {
return b[1] - a[1];
}
var list =new Array();
for (var index in newArray){
list.push(new Array(index, (newArray[index]/words.length)*100));
}
list.sort(compare); // tri
WordCloud(canvas, { list: list,
gridSize: 12,
weightFactor: 50,// taille de la police
fontFamily: "Average, Times, serif",
color: function() {
return (["#d0d0d0", "#e11", "#44f"])[Math.floor(Math.random() * 3)]
},
backgroundColor: "#333",
drawOutOfBound: true
});
</script>
</body>
</html>
voici le code qui permet d'extraire le contenue entre les head:
$adresse='http://127.0.0.1/nuageMots.html'; // lien de la page html ci-dessus
$page=file_get_contents($adresse);
preg_match_all('#<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<script src="wordcloud2.js/src/wordcloud2.js"></script>
</head>#i', $page, $liens);
foreach($liens[0] as $complet) {
echo htmlspecialchars($complet).'<br />';
}
le echo devrait m'afficher : <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><script src="wordcloud2.js/src/wordcloud2.js"></script></head>
mais rien ne s'affiche .
Merci d'avance pour votre aide

Bonjour à tous,
Cela fait un moment que je bloque sur ce problème, je vous explique:
Je veux récupérer deux parties d'un code html, la partie entre <head></head et la partie entre <body></body>.
J'ai commencé à essayer d'extraire la partie compris entre les HEAD.
voici le code complet de la page html:
[php]<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script src="wordcloud.js/src/wordcloud.js"></script>
</head>
<body>
<style>
canvas {
padding-left: 100;
margin-top: 150;
width: 600px;
}
</style>
<canvas id="theCanvas" width="1000" height="1000"></canvas>
<script>
///////fonction ////////
function load() {
if (window.XMLHttpRequest) {
request = new XMLHttpRequest();
}
else if (window.ActiveXObjet) {
request = new ActiveXObjet("Microsoft.XMLHTTP");
}
else {
return;
}
request.open('GET', 'nuageMot4.txt', false); // Synchro
request.send(null);
return request.responseText;
}
////////////////////////////////////////////////////////////////////////////////
var canvas=document.getElementById('theCanvas');
var context=canvas.getContext('2d');
var text = load();
var pattern = /((^|[^a-z0-9àáâãäåçèéêëìíîïðòóôõöùúûüýÿ]))/gi;
textWithoutSpecialChars = text.replace(pattern, " " );
var patternWord=/[\wàáâãäåçèéêëìíîïðòóôõöùúûüýÿ]{2,}/gi;
var words = textWithoutSpecialChars.match(patternWord);
var newArray= new Array();
for(i = 0; i<words.length; i++){
var index = words[i];
if(typeof newArray[index] != "undefined"){
newArray[index]++;
}
else{
newArray[index] = 1;
}
}
//compare
function compare(a, b) {
return b[1] - a[1];
}
var list =new Array();
for (var index in newArray){
list.push(new Array(index, (newArray[index]/words.length)*100));
}
list.sort(compare); // tri
WordCloud(canvas, { list: list,
gridSize: 12,
weightFactor: 50,// taille de la police
fontFamily: "Average, Times, serif",
color: function() {
return (["#d0d0d0", "#e11", "#44f"])[Math.floor(Math.random() * 3)]
},
backgroundColor: "#333",
drawOutOfBound: true
});
</script>
</body>
</html>[/php]
voici le code qui permet d'extraire le contenue entre les head:
[php]$adresse='http://127.0.0.1/nuageMots.html'; // lien de la page html ci-dessus
$page=file_get_contents($adresse);
preg_match_all('#<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<script src="wordcloud2.js/src/wordcloud2.js"></script>
</head>#i', $page, $liens);
foreach($liens[0] as $complet) {
echo htmlspecialchars($complet).'<br />';
}[/php]
le echo devrait m'afficher : <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><script src="wordcloud2.js/src/wordcloud2.js"></script></head>
mais rien ne s'affiche .
Merci d'avance pour votre aide ;)