2012-02-11 19 views
-3

私はh1を持っています。これはテキストを取得してからエコーとしてエスケープしたいものです。たとえば、次のようなものです:http://jsfiddle.net/mZGH7/php PHP変数であるhtml要素を取得します

<html> 
<head> 
    <title><?php echo (".example"); ?></title> 
</head> 
<body> 
    <h1 class="example">this is going to be the title</h1> 
</body> 
</html>​ 
+0

"これはタイトルになる"を変数に入れて、それをに使用します。 JQueryを使用します。 –

+1

申し訳ありませんが、私はあなたがしようとしていることを理解していません。あなた自身をより良く説明してください。 – skimberk1

答えて

4

あなたはPHP's DOM extension and XPathであることを行うことができますが:

ZFのDOM Queryコンポーネントと同様に、セレクタを実装するLIB
<?php 
    libxml_use_internal_errors(true); 
    $dom = new DOMDocument; 
    $dom->loadHTMLFile(__FILE__); 
    $xpath = new DOMXPath($dom); 
?> 
<html> 
<head> 
    <title><?php echo $xpath->evaluate('string(//h1[@class="example"])'); ?></title> 
</head> 
<body> 
    <h1 class="example">this is going to be the title</h1> 
</body> 
</html> 

または第三者との:

<?php 
    libxml_use_internal_errors(true); 
    $dom = new Zend_Dom_Query(file_get_contents(__FILE__)); 
?> 
<html> 
<head> 
    <title><?php echo $dom->query('.example')->current()->nodeValue; ?></title> 
</head> 
<body> 
    <h1 class="example">this is going to be the title</h1> 
</body> 
</html> 

ことがありますあなたが本当にすべきことよりもはるかに時間がかかり、はるかに複雑であるため、完全に無意味です。つまり、

<?php $title = 'this is going to be the title'; ?> 
<html> 
<head> 
    <title><?php echo $title ?></title> 
</head> 
<body> 
    <h1 class="example"><?php echo $title ?></h1> 
</body> 
</html>​ 

ことができない場合は、JavaScriptを使用して読んでください:

+0

コードに部分的に間違いはありませんが、答えの最初の部分が間違っています。 HTML生成後にPHPクライアント側を実行しようとしているようです。 – Relequestual

+0

もちろん、それが多相PHPの世代であれば動作しますが、これは私たちがここに持っているものではありません。 – Relequestual

+0

@Relequestualクライアント側とサーバー側の処理についてOPが混乱する可能性があると私は同意しますが、それを示唆する質問は何も表示されません。 – Gordon

1

私はPHPでそれを行う方法を考えることはできませんが、いくつかの簡単なJavascriptがそれを行う必要があります。このような何か:

document.title = document.getElementsByTagName("h1")[0].innerHTML;​ 
1

あなたはPHPクライアント側を実行しようとしているかのようにそれは私に表示されます。 PHPはサーバー側です。 HTMLを生成してブラウザに渡します。 HTMLが生成されたら、Javascriptを使用してDOMを操作できます。そのためには、本当にjQueryを使いたいと思うでしょう。

+1

これに応じて編集されました。 – Relequestual

1

私はあなたがjavascriptとphpを混合していると思います。この作品のような何か:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title>Insert title here</title> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" ></script> 
</head> 
<body> 


    <h1 class="example">this is going to be the title</h1> 

<script> 
var salida = $(".example").html(); 
$('title').html(salida); 

</script> 
</body> 
</html> 
1

クイック短い答え

HTMLの隠しフィールドを作成しますが、同時に、JavaScript、およびPHPによって、両方、アクセスすることができます。 Webページの開発

拡張ボーリング答え

は、デスクトップアプリケーションを開発するよりも異なっています。

HTMLページにテキスト、ラジオボタン、チェックボックスなどのコントロールがある場合。そして、WebページはPHPを使って違法に生成されました。そして、ユーザーはそれらをサーバーに送り返し、PHPの変数のように値にアクセスできます。

テキストボックスコントロールで起こるように、変数やコントロールのように機能するが、内容は表示されない「隠しフィールド」と呼ばれるものがあります。

ウェブページは、PHP、HTMLなどのWeb言語を使用してサーバーで生成された後、クライアントのブラウザでHTML、JavaScript(存在する場合)を使用して2回実行されます。あなたは、HTMLコントロールがどのように生成されるかについて学び、int型のPHP、およびJavaScriptでのアクセスをリードバックすることもできます

概要

1

他の誰もがすでに言っているように、それを行う最良の方法ではありません(PHPを使用して、より複雑ではない場合はjavaScriptを使用する必要があります)。言われていることを、PHPは、output control functionsを使用することによって、あなたがそれを行うことができますので、のように:

<?php 
function callback($buffer) 
{ //using Gordon's answer (http://stackoverflow.com/a/9245074/487891) 
    libxml_use_internal_errors(true); 
    $dom = new DOMDocument; 
    $dom->loadHTML($buffer); 
    $xpath = new DOMXPath($dom); 
    $buffer = str_replace("{{my_title}}",$xpath->evaluate('string(//h1[@class="example"])'),$buffer); 
    return $buffer; 
} 

ob_start("callback"); 
?> 

<!-- and then your html --> 
<html> 
<head> 
    <title>{{my_title}}</title> 
</head> 
<body> 
    <h1 class="example">this is going to be the title</h1> 
</body> 
</html>​ 

<?php ob_flush(); ?> 

私はこれをテストしていないので、このコードに誤りがあるかもしれませんが、これは基本的な考え方

だろう
関連する問題