<p>
pre タグ内にあるタグを削除する必要があります。php でこれを行うにはどうすればよいですか? 私のコードは次のようになります。
<pre class="brush:php;">
<p>Guna</p><p>Sekar</p>
</pre>
タグ内のテキストが<p>
必要で、タグのみを削除する必要があります<p>
</p>
。
<p>
pre タグ内にあるタグを削除する必要があります。php でこれを行うにはどうすればよいですか? 私のコードは次のようになります。
<pre class="brush:php;">
<p>Guna</p><p>Sekar</p>
</pre>
タグ内のテキストが<p>
必要で、タグのみを削除する必要があります<p>
</p>
。
簡単な作業のように見えましたが、方法を見つけるのに何時間もかかりました。これは私がやったことです:
<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>
ご提案いただきありがとうございます。
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 以降でのみ機能することに注意してください。
基本的な正規表現を使用できます。
<?php
$str = <<<STR
<pre class="brush:php;">
<p>Guna</p><p>Sekar</p>
</pre>
STR;
echo preg_replace("/<[ ]*p( [^>]*)?>|<\/[ ]*p[ ]*>/i", " ", $str);
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.