Forum Clubic

Traduction d'un script php

Bonjour

Je dois faire un mini site internet en ASP, je l’ai déjà codé en PHP.
J’essaye de traduire un script PHP en ASP :

<?php

function lecture($url) {

	$fichier = fopen($_SERVER['DOCUMENT_ROOT'].$url, 'r');
	$lire = false;

	while ($ligne = fgets($fichier)) {

		if (preg_match('#<\/body#i', $ligne))
			$lire = false;

		if ($lire)
			echo $ligne;

		if (preg_match('#<body#i', $ligne))
			$lire = true;
	}

	fclose($fichier);
}

?>
<%

Function lecture(url)

	Set objFso = CreateObject("Scripting.FileSystemObject")
	Set fichier = objFso.OpenTextFile(".." & url)

	Set regex1 = New RegExp
	regex1.IgnoreCase = True
	regex1.Pattern = "<\/body"

	Set regex2 = New RegExp
	regex2.IgnoreCase = True
	regex2.Pattern = "<body"

	dim lire
	dim tmp

	lire = False

	While not fichier.atEndOfStream

		tmp = fichier.readLine

		If regex1.Test(tmp) then
			lire = False
		End If

		If lire then
			Response.write tmp
		End If

		If regex2.Test(tmp) then
			lire = True
		End If
	Wend

End Function

%>

Mon problème c’est que le code ASP n’affiche rien :’( lorsqu’il est appelé :

<!--
#include file="../include/lecture.asp"
lecture("/personnel/direction/mot.html")
-->

Ou me suis je trompé ?
Merci
Edité le 07/10/2008 à 20:50

Faut pas mettre ton code dans des balises <% … .%> genre :

<%
#include file="…/include/lecture.asp"
lecture("/personnel/direction/mot.html")
%>

(pas fait d’ASP non plus, donc je dis peut-être une connerie)

Apparemment non, car #include n’est plus reconnue :’(

Microsoft VBScript runtime error ‘800a000d’

Type mismatch: ‘include’

/ecole/mot.asp, line 50

Je dirais :


<!--#include file="../include/lecture.asp"-->

<% lecture("/personnel/direction/mot.html") %>

(Oui les includes en ASP sont bizarres…)

Yes :slight_smile: Bien vu.

Cependant, comme je le pensais, ma fonction lecture ne fonctionne pas :confused:

Microsoft VBScript runtime error ‘800a004c’
Path not found
F:\INETPUB…/include/lecture.asp, line 6

Le problème vient d’ici :
Set fichier = objFso.OpenTextFile("…" & url)

L’url vaut /personnel/direction/mot.html
Cependant, le script ne le fais pas, le chemin du fichier n’est pas compris.

Remplace tes “/” par des “” dans ta variable url.

Nan, même problème…
Je sais pas si le “…” & url fonctionne comme je le voudrais.

C’est quoi dans ton cas le DOCUMENT_ROOT?

Aussi, tu sais, même en ASP, ce genre de variables existe. Je ne peux pas te dire comment y avoir accès, mais kookiz33 saura sûrement.

Ha il me semblais avoir lu que sa n’existait pas :ane:
Vu l’erreur, le document root est : F:\INETPUB\DISTRICT09\ENVOLEE\ECOLE\

J’ai essayé : Set fichier = objFso.OpenTextFile(“F:\INETPUB\DISTRICT09\ENVOLEE\ECOLE” & url)
Même erreur…
Edité le 07/10/2008 à 20:40

Ca fait longtemps que je n’ai plus fait d’ASP3 :stuck_out_tongue:

Mais il me semble que dans ce genre de situation j’utilisais la fonction Server.MapPath.

Essaie :


Set fichier = objFso.OpenTextFile(Server.MapPath(url))

(sans garantie)
Edité le 07/10/2008 à 20:37

Génial :slight_smile:

Merci beaucoup kookiz33
Je t’aime :slight_smile:

Une dernière question pendant que j’y suis…

J’essaye de remplacer src= par src= + une variable
J’ai fais ça : tmp = tmp.Replace(“src=” & url, “src=”)

Une jolie erreur pour récompenser mon travail :
Microsoft VBScript runtime error ‘800a01a8’
Object required: ‘tmp’
F:\INETPUB\DISTRICT09\ENVOLEE\ECOLE…/include/lecture.asp, line 35

Tu ne le fais pas avant ton “tmp = fichier.readLine” au moins ? Sinon je ne vois pas… A la limite remplace par :


if not tmp is nothing
tmp = tmp.Replace("src=" & url, "src=")
End if

Edité le 07/10/2008 à 22:18

Ben si, pourquoi faut pas ? :yeux2:

Je lit la ligne du fichier
Je remplace tout les src= par src= + la variable url
Et enfin j’affiche le tout à l’écran

Je m’assurais juste que tu ne faisais pas l’ordre inverse : tu remplaces puis tu lis la ligne :wink:

http://www.asp-php.net/scripts/asp.net/generationrss.php?page=3

Ici ils utilisent replace directement, et non tmp.replace. C’est peut être ça le problème.

Exact :slight_smile: ça fonctionne tout de suite mieux.

Cependant il me reste un problème avec le " dans l’expression régulière, j’ai pourtant échappé le caractère mais il veut rien savoir…

Microsoft VBScript compilation error ‘800a03ee’
Expected ‘)’
F:\INETPUB\DISTRICT09\ENVOLEE\ECOLE…/include/lecture.asp, line 33

tmp = Replace(tmp, “src=”", " src="" & url)
-------------------------------^

Me semble que dans ce chouette langage, c’est pas \ mais que tu ne peux pas doubler.

ie:

Replace(tmp, “src=”", " src="" & url)

->

Replace(tmp; “src=” & Char(34), " src=" & char(34) & url)

Sinon double le caractère.

Effectivement.

Cependant : Type mismatch: ‘Char’
Sa lui plaît presque :smiley:

Char(34).toString ?

C’est Chr je crois, pas Char.

Yeahhh :stuck_out_tongue: :stuck_out_tongue:

Génial messieurs, je vous remercierai jamais assez.
Merci beaucoup pour votre aide.