Newsgroup: it.comp.www.php
Titolo: PHP e <title>qwerty</title>

Ho diverse pagine PHP basate su di un unico modello.
Ogni pagina ha un <title> diverso.
E possibile da PHP leggere il <title> della pagina quando viene chiamata e 
metterlo in una variabile?
La possibilità esiste in javascript ma avrei necessita di averla lato 
server, cioè in PHP, sapete se è fattibile?
Grazie
Leo

 metterlo in una variabile?
Non ho capito come funziona il sistema, correggimi se sbaglio, hai un
file php che apre un file html, gli scrive "dentro" delle cose, e poi
lo renderizza? Se è così puoi usare una regular expression che cerca
ciò che è contenuto tra le stringhe "<title>" e "</title>", solo la
prima occorrenza ovviamente.
d

 d
Non ti conviene un bel
<?php
$title = "qwerty";
?>
<html>
<head>
<title><?php echo $title; ?></title>
...
?
Magari la seconda parte la metti nel modello, e aggiungi dopo
l'assegnazione del titolo un bel "require('header.php');":
In questo modo hai un header dinamico che dipende dalle istruzioni in testa
a ciascuna pagina.

 prima occorrenza ovviamente.
Sono io che l'ho fatta troppo lunga.
Questo č il codice javascript
<script language="javascript">
var T = window.document.title;
alert("Questa pagina ha per titolo " + T);
</script>
esiste qualcos adi analogo in PHP che dovrebbe essere tipo
<?php
$T = Qui_ci_va_il_codice_che:legge_il_titolo;
echo ("Questa pagina ha per titolo " + $T);
?>
Grazie
Leo

"Astro" <as...@nonesiste.boh> ha scritto nel messaggio 
news:gkocse$2ln$1...@news.motzarella.org...

Esattamente l'inverso.


 
Un'occhiatina a preg_match e sue sorelle?
L'espressione regolare da usare e'
'\<title\>.*?\<\/title\>'
(Non mi ricordo se PHP distingue tra comportamento greedy e non-greedy, per
cui non so se accetta quel punto di domanda. In ogni caso si presume che ci
sia un unico tag di chiusura title, per cui credo si possa anche togliere.)


in $string ci metti il contenuto della vista.
preg_match_all("(<title>(.*)</title>)siU", $string, $matching_data);
$titolo = $matching_data[0];

"Astro" <as...@nonesiste.boh> ha scritto nel messaggio 
news:gkodvn$d80$1...@news.motzarella.org...

Non mi riferisco al nome della pagina come file pagina.php che contiene il 
tutto, ma al codice html ed il particolare al tag title.
Che io sappia il server non invia il titolo della pagina ma la path (fra le 
altre cose).
Leo

 ?>
JavaScript viene eseguito sul client quando la pagina e' gia' "formata" e puo',
quindi, "vederla" nella sua interezza e applicare un'analisi al testo HTML della
stessa.
PHP viene eseguito sul server, e' (anche) lui che genera la pagina e non puo',
ovviamente, compiere le medesime analisi sulla pagina rispetto a quelle che
compie JavaScript per il semplice fatto che quando viene eseguito del codice PHP
ci sta che la pagina non esista ancora.
Quello che puoi fare con JavaScript e' richiamare un'altra pagina PHP passando a
questa dei valori:
http://it.php.net/manual/en/faq.html.php#faq.html.javascript-variable
Ciao,
luigi
-- 
/
+--[Luigi Rosa]--
\
Abbellire e mettere cazzate costa meno ore/uomo che risolvere i
problemi. E normalmente le ore/uomo di chi risolve i problemi
costano di più delle ore/uomo di chi aggiunge cavolate.
    --Stefano Petroni

 altre cose).
Non ho capito bene che intendi ma ti assicuro che il server invia il 
titolo della pagina, altrimenti il browser non potrebbe mostrarlo.


Ok, e non esiste un istruzione del tipo
<script language="javascript">
var T = window.document.title;
alert("Questa pagina ha per titolo " + T);
</script>
ma che lo faccia in PHP?
Grazie
Leo

 var T = window.document.title;
No, mi ripeto: non puoi accedere alla pagina, php vive _prima_ è lui che 
costruisce la pagina (almeno si spera).

 ha scritto nel messaggio 
news:suppanews-A22FF...@newssrv.fastweb.it...

ok, grazie.
Leo


In quello schifo di aspx si puo' fare!Ci lavoro da 1 anno e passa ormai 
e mi fa sempre piu' schifo!! vojo tornare a php!!! :-( :-( :-(
-- 
http://www.evilripper.net

 e mi fa sempre piu' schifo!! vojo tornare a php!!! :-( :-( :-(
Lo puoi fare probabilmente anche in PHP se abiliti l'Output Buffering
Ciao,
luigi
-- 
/
+--[Luigi Rosa]--
\
I used to wish the universe were fair. Then one day it hit me: What if
the universe were fair? Then all the awful things that happen to us in
life, would happen because we deserved them. So now I take great
pleasure in the general hostility and unfairness of things.
       --Marcus Cole, "A Late Delifery from Avalon", Babylon 5



<OT>
se il lavoro è più o meno la vita, allora si può dire che .NET mi ha
cambiato la vita, e per quanto abbia sembre "amato" PHP adesso non
tornerei più indietro, non tornerei a fare siti con un linguaggio di
scripting, per quanto evoluto possa essere.
d

 ha scritto nel messaggio 
news:pan.2009.01.15....@inwind.it...

Non capisco cosa intendi per "contenuto della vista", puoi farmi un esempio?
Grazie
Leo

 Non capisco cosa intendi per "contenuto della vista", puoi farmi un esempio?
dal resto del 3d ho capito che non avevo capito cosa volevi :)
ho parlato di vista perchè tu parlavi di modello, ma dopo ho capito che
non ti riferivi a QUEL modello (*)
In ogni caso io ti ho detto: "prendi il contenuto del file html che vuoi
analizzare, ne estrai il contenuto del tag <title> con queste funzioni..."
Quello che ti ho detto vale pero' lato server, tu vorresti fare una cosa
che ne valuta il contenuto dopo che la pagina è stata mandata al browser
(credo). Afaik non si puo' fare, dico afaik perchè anche io non
conoscevo la cosa dell'output bufering che ti ha detto andrea (e continuo
a non conoscerla visto che non saprei che farmene :))
ciao
(*)
http://it.wikipedia.org/wiki/Model-View-Controller


Potendo in qualche modo far leggere al PHP il contenuto della pagina subito 
prima di essere inviata al client sarebbe per esempio possibile creare dei 
matatag.
Metatag creati dal codice PHP sulla base del titolo e del contenuto testuale 
della pagina o di una determinata parte di essa, per esempio un css <div> 
significativo.
Leo
.

 matatag.
Cerca "Output Buffering" nella documentazione di PHP.
Ciao,
luigi
-- 
/
+--[Luigi Rosa]--
\
Superior ability breeds superior ambition.
    --Spock, "Space Seed"

 prima di essere inviata al client
A seconda di quanto subito è quel "subito prima" l'output buffering che 
ti hanno già suggerito almeno in due o qualche estensione del server che 
entri in gioco immediatamente prima di restituire la pagina.
Secondo me è più semplice se spieghi cosa vuoi ottenere.

> Secondo me è più semplice se spieghi cosa vuoi ottenere.
Concordo: se tu dicessi cosa vuoi fare (con respiro più ampio, non il
dettaglio) potremmo forse darti una mano.
Credo però di avere un'idea: hai una parte di codice PHP in un file
comune (incluso in più pagine); in questa parte di codice vorresti
però sapere quale pagina richiama quel codice comune, e soprattutto
che titolo ha. E' questo che vuoi?


è molto probabile, e cambiare il titolo in base alla richiesta.

 che titolo ha. E' questo che vuoi?
Sinteticamente si
Leo

 Sinteticamente si
nel senso che poi vorresti settarlo al giusto valore
se è così la soluzione è questa:
diciamo che la pag fiori.php debba includere questo template
(template.php) comune a tutte le pagine.
prima di includere il template valorizza in fiori.php la variabile
$title="Fiori"
poi: include("template.php")
mentre dentro template.php avrai una riga del genere:
<title><?php echo $title;?</title>
così in ogni altra pagina che include il template
ps: visto che usi questo approccio, io un'occhiatina al pattern mvc, e ad
un framework gliela darei

 Leo
Per esempio controllare il valore di $_SERVER['PHP_SELF'] potrebbe
funzionare?

 funzionare?
No, $_SERVER['PHP_SELF'] da la path non il nome della pagina.
Leo


No, č esattamente l'inverso.
Nel file esterno ho per esempio 2 variabili $Fiori1 = "rosse" e Fiori2 = 
"Gialle", (potrebbe essere un array per molti valori ma questo esula dal 
discorso).
All'inclusione viene letto il titolo della pagina che puň essere
<title>rose</title>
o
<title>margherite</title>
Se title č rose : echo $Fiori1
Se title č margherite : echo $Fiori2
Come si puň fare?
Leo

 Se title è margherite : echo $Fiori2
a parte che continuo a non capire, se quel template è comune a tutte
come puo' avere title diversi?
detto questo, alla fine la soluzione che ti ho dato come prima risposta è
quella giusta (alla fine a non averci capito nulla di quello che chiedevi
ho risposto correttamente!)
il contenuto del file che includi lo devi pero' esaminare prima di
includerlo (o anche dopo, pero' diciamo in un altro momento) aprendolo in
lettura come file di testo e applicando al suo contenuto le funzioni
preg_match etc etc
ciao
comnque mi sembra che sia tutto un bel po' incasinato, ti ribadisco di
iniziare ad appoggiarti a strumenti che danno una struttura al tuo
software (se poi devi solo fare il sito della parrocchia è un altro paio
di maniche :))

 Leo
Certo, ma una volta che hai il path (comprensivo del nome del file)
puoi leggere il contenuto del file (ad es. con file_get_contents() ) e
ricavare il valore del titolo (ad esempio con preg_match() o strpos
() ).
Non che sia una tecnica molto sensata, però: sarebbe doveroso cambiare
la struttura alla radice.
Se invece non ho capito qual è il problema, dovresti postare il codice
di una pagina (e del template).

 la struttura alla radice.
In effetti è un largo giro che però porta alla soluzione.
Grazie
Leo

 ?>
Scusa, ma se ho capito bene cosa cerchi,
non puoi farlo semplicemente con degli array?
In testa metti:
isset($_GET["pagina"]) ? $pagina=$_GET["pagina"] : $pagina="home";
$titles=array("home"=>"Pagina principale", ...);
$descriptions=array("home"=>"Questa è la home", ...);
$keywords=array("home"=>"parola1, parola2", ...);
e poi nello head dell'index
<title><?php echo $titles["$pagina"] ?></title>
<meta name="description" content="<?php echo
($descriptions["$pagina"]) ?>" />
<meta name="keywords" content="<?php echo $keywords["$pagina"] ?>" />
M.