php中的regex从wiki文本中删除引用


regex in php remove citation from wiki text

从给定的示例文本中,我希望将文本与[[]]和{{}}中包含的文本分开

示例文本:

1988年12月11日,年仅15岁零232天的Tendulkar在他的首秀[[一级板球|一级]]中为[[孟买板球队|孟买]]对阵[[古吉拉特邦板球队|古吉拉特邦]]取得了100分,这使他成为一个世纪以来最年轻的一级首秀得分印度人。随后,他在自己的第一个Deodhar和Duleep奖杯上打入了一个世纪的进球。{引用web|url=http://www.espnstar.com/cricket/international-cricket/news/detail/item136972/Sachin-Tendulkar-factfile/|title=Sachin Tendulkar factfile | publisher=www.espnstar.com|accessdate=3 August 2009}}他在看到孟买队长[[Dilip Vengsarkar]]在篮网谈判[[Kapil Dev]]后被选中,并以孟买最高的得分者的身份结束了本赛季=http://blogs.cricinfo.com/link_to_database/ARCHIVE/1980S/1988-89/IND_LOCAL/RANJI/STATS/IND_LOCAL_RJI_AVS_BAT_MOST_RUNS.html|title=1988–89兰吉赛季–最多跑次数| publisher=Cricinfo | accessdate=2009年8月3日}}他还在[[伊拉尼奖杯]]决赛中创下了百年不败纪录=http://cricketarchive.com/Archive/Scorecards/52/52008.html|title=1989/90年印度其他地区诉德里|publisher=Cricketarchive|accessdate=2009年8月3日}},并在仅仅一个一流赛季后被选中参加明年的巴基斯坦巡回赛。

我试过这个:

$patterns = ("/^{{*/", "/*}}$/" );$replacements = "";
  preg_replace($patterns, $replacements, $parts);
  print_r($parts);

这个:

$parts = preg_replace("/'[(?:''''|''']|[^']])*']/", "", $ans_str);

还有这个:

$pattern = ("/'[.*?']/", "/'{.*?'}/");
  $ans = preg_replace($pattern, "", $parts);

它不起作用。请帮忙,谢谢。

这应该可以完成

$str = "On 11 December 1988, ...";
$str = preg_replace('/'{'{.+'}'}/Us', '', $str);
var_dump($str);

U修饰语表示不自由模式,这意味着尽快停止比赛(以避免所有引用都被视为一场巨大的比赛(。

EDIT:添加了s修饰符,请参见注释

// remove `{{cite}}` tags
$str = preg_replace('/'s*'{'{[^}{]*+'}'}'s*/', ' ', $str);
// remove links--including rollover text--leaving link text
$str = preg_replace('/'['[(?:[^][|]*+'|)?+([^][]*+)']']/', '$1', $str);

请参阅ideone.com上的演示

以下两行完成了任务:

$str = preg_replace(/'s*'{{.*?'}}'s*/g, " ", $str);//to remove the curly braces and the text between them.
$str = preg_replace(/['[(.)']]/g, "", $str);//to remove the square braces.

抱歉出了问题。