如何在匹配中的任何标记后找到字符串

时间:2014-05-06 07:57:03

标签: php regex perl

我的字符串是

grunds&\#x00E4;tzlich Prek&\#x00E4;re&\#x201C;.<a id="cein_fn31"
href="einleitung.html#ein_fn31"><sup>31</sup></a> Nur in den
mannigfaltigen Spielarten des Festlichen ist

我需要一个正则表达式模式来匹配标签关闭后的所有内容(即:

Nur in den mannigfaltigen Spielarten des Festlichen ist

注意:标记名称可能会有所不同

任何人请分享任何想法

3 个答案:

答案 0 :(得分:1)

此程序的工作原理是在字符串末尾找到非尖括号<>的所有字符。

use strict;
use warnings;

my $s = <<'__END_STRING__';
grunds&\#x00E4;tzlich Prek&\#x00E4;re&\#x201C;.<a id="cein_fn31"
href="einleitung.html#ein_fn31"><sup>31</sup></a> Nur in den
mannigfaltigen Spielarten des Festlichen ist
__END_STRING__

my ($subtext) = $s =~ /([^<>]*)\z/;

print $subtext;

<强>输出

 Nur in den
mannigfaltigen Spielarten des Festlichen ist

答案 1 :(得分:0)

备用正则表达式解决方案

代码使用strrpos()作为后台搜索来查找结束>,并使用substr()

来切断结束echo $str = trim(strip_tags(substr($str,strrpos($str,'>')+1)));
{{1}}

Demonstration

答案 2 :(得分:0)

您也可以尝试使用以下代码。

<?php
$string = "<a>Hii</a>
           <div>div tag here</div>
           <p>para tag here</p>";
$string = str_replace(">","&#*#&", $string);
$string_arr = explode("&#*#&", $string);

$final_arr = array();
for($i=0; $i<count($string_arr); $i++){
    $string_arr[$i] = trim(strip_tags($string_arr[$i]));
    if($string_arr[$i] != ''){
        $final_arr[] = $string_arr[$i];
    }
}
print_r($final_arr);
?>