<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; line-height: 15pt; text-align: left"align="left">谢谢</p>
我需要的是求个正则能把上面的匹配成 :
<p style="MARGIN: 0cm 0cm 0pt; line-height: 15pt; text-align: left">谢谢</p>
应该怎么写.
我需要的是求个正则能把上面的匹配成 :
<p style="MARGIN: 0cm 0cm 0pt; line-height: 15pt; text-align: left">谢谢</p>
应该怎么写.
<?php
$str = '<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; line-height: 15pt; text-align: left"align="left">谢谢</p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; line-height: 15pt; text-align: left"align="left">谢谢</p>';
$pattern = "/<\w+\s*|style\s*=\s*\".*?\"|>[^<]*?<\/\w+>/i";preg_match_all($pattern, $str, $match);
print_r($match);
$result = '';
if(isset($match[0])) {
for($i=0; $i<count($match[0]); $i+=3) {
echo $match[0][$i] . $match[0][$i+1] . $match[0][$i+2] . "\n";
}
}
?>
$str=<<<EOD
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; line-height: 11pt; color:red; text-align: left"align="left">aaaaaaaaa</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; line-height: 12pt; color:red; text-align: left"align="left">bbbbbbbbbbbbbbbbb</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; line-height: 13pt; color:red; text-align: left"align="left">cccccccccccccc</p>
EOD;preg_match_all('/<p.*(style=[\'"][^"\']*[\'"]).*>([\d\D]*)<\/p>/iU',$str,$match);foreach($match[1] as $key=>$value) {
echo '<p '.$value.'>'.$match[2][$key].'</p>';
}
<?php
$str1 = '<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; line-height: 15pt; text-align: left"align="left">thanks</p>';
preg_match_all("/<p(?!style)([\d\D]*)style=\"([^\"]*)\"[^>]*>([\d\D]*)<\/p>/iU",$str1,$match);$style_info = $match[2][0];
$title_info = $match[3][0];
$new_str = '<p styel="'.$style_info.'">'.$title_info.'</p>';
echo $new_str;?>
如果是需要把一整段内容里面嵌入的'<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; line-height: 15pt; text-align: left"align="left">谢谢</p>进行替换的话,
请用preg_replace_callback 来处理。
代码已经过调试,可以直接使用.$str1 = '11111111111111<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; line-height: 15pt; text-align: left"align="left">test of p1</p>222222222<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; line-height: 15pt; text-align: left"align="left">test of p2</p>333333';
preg_match_all("/<p(?!style)([\d\D]*)style=\"([^\"]*)\"[^>]*>([\d\D]*)<\/p>/iU",$str1,$match);
$line = preg_replace_callback(
"/<p(?!style)([\d\D]*)style=\"([^\"]*)\"[^>]*>([\d\D]*)<\/p>/iU",
create_function(
'$matches',
'return "<p styel= \"$matches[2]\">$matches[3]</p>";'
),
$str1
);
echo $line;