0

<p>pre タグ内にあるタグを削除する必要があります。php でこれを行うにはどうすればよいですか? 私のコードは次のようになります。

<pre class="brush:php;">
<p>Guna</p><p>Sekar</p>
</pre>

タグ内のテキストが<p>必要で、タグのみを削除する必要があります<p> </p>

4

5 に答える 5

0

簡単な作業のように見えましたが、方法を見つけるのに何時間もかかりました。これは私がやったことです:

  • ソースフォージから シンプルな dom パーサーをダウンロード
  • 各タグをトラバースし、タグ <pre>を取り除く<p>
  • <pre>コンテンツをタグ に書き換えます
  • 変更されたコンテンツを取得する

完全なコードは次のとおりです。

include_once 'simple_html_dom.php';
$text='<pre class="brush:php;"><p>Guna</p><p>Sekar</p></pre>';
$html = str_get_html($text);
$strip_chars=array('<p>','</p>');
foreach($html->find('pre') as $element){
  $code = $element->getAttribute('innertext');
  $code=str_replace($strip_chars,'',$code);
  $element->setAttribute('innertext',$code);
}
echo $html->root->innertext();

これは出力されます:

<pre class="brush:php;">GunaSekar</pre>  

ご提案いただきありがとうございます。

于 2013-06-29T13:03:22.873 に答える
0

preg_replace_callback()を使用して<pre>タグ内のすべてのものを照合し、strip_tags()を使用してすべての html タグを削除できます。

$html = '<pre class="brush:php;">
<p>Guna</p><p>Sekar</p>
</pre>
';

$removed_tags = preg_replace_callback('#(<pre[^>]*>)(.+?)(</pre>)#is', function($m){
    return($m[1].strip_tags($m[2]).$m[3]);
}, $html);
var_dump($removed_tags);

これは PHP 5.3 以降でのみ機能することに注意してください。

于 2013-04-28T17:18:11.637 に答える
0

基本的な正規表現を使用できます。

<?php
$str = <<<STR
<pre class="brush:php;">
<p>Guna</p><p>Sekar</p>
</pre>
STR;
echo preg_replace("/<[ ]*p( [^>]*)?>|<\/[ ]*p[ ]*>/i", " ", $str);
于 2013-04-28T16:23:27.113 に答える
0

You can try the following code. It runs 2 regex commands to list all the <p> tags inside <pre> tags.

preg_match('/<pre .*?>(.*?)<\/pre>/s', $string, $matches1);
preg_match_all('/<p>.*?<\/p>/', $matches1[1], $ptags);

The matching <p> tags will be available in $ptags array.

于 2013-04-28T16:45:44.787 に答える