регулярное выражение в php удалить цитату из текста вики - PullRequest
0 голосов
/ 14 августа 2011

Из данного образца текста я хочу, чтобы текст был отделен от тех, которые содержатся в [[]] и {{}}

Образец текста:

11 декабря 1988 года, в возрасте всего 15 лет и 232 дней, Тендулкар набрал 100 очков в своем дебютном матче [[первоклассный крикет | первоклассный]] за [[команда по крикету Мумбаи | Бомбей]] против [[ Гуджаратская команда по крикету | Gujarat]], что делает его самым молодым индейцем, который выиграл столетие в первоклассном дебюте. Он последовал за этим, выиграв столетие в своем первом Дедхар и Дулее Трофи. {{cite 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 августа 2009}} Он был выбран капитаном Мумбаи [[Дилип Венгскаркар]] после того, как увидел, как он ведет переговоры [[Kapil Dev] ] в сетках, и закончил сезон как самый высокий результат в Бомбее. Он набрал 583 пробега в среднем 67,77, и был шестым самым высоким забегом в общем {{cite web | url = 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 Сезон Ranji - Most Runs | publisher = Cricinfo | accessdate = 3 августа 2009}} Он также прошел непобедимый в финале [[Иранский трофей]], {{cite web | url = http://cricketarchive.com/Archive/Scorecards/52/52008.html|title=Rest из Индии против Дели в 1989/90 году. | publisher = Cricketarchive | accessdate = 3 августа 2009}} и был выбран для тура по Пакистану в следующем году, после всего одного сезона первого класса.

Я пробовал это:

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

и это:

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

и это тоже:

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

Это не работает. Пожалуйста, помогите, спасибо.

Ответы [ 3 ]

6 голосов
/ 14 августа 2011

Это должно сработать

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

Модификатор U предназначен для режима «разжевывание», что означает остановку матча как можно скорее (чтобы избежать попадания всех цитат в один гигантский матч).

РЕДАКТИРОВАТЬ: добавлен модификатор s, см. Комментарии

0 голосов
/ 15 августа 2011
// remove `{{cite}}` tags
$str = preg_replace('/\s*\{\{[^}{]*+\}\}\s*/', ' ', $str);

// remove links--including rollover text--leaving link text
$str = preg_replace('/\[\[(?:[^][|]*+\|)?+([^][]*+)\]\]/', '$1', $str);

см. Демонстрацию на ideone.com

0 голосов
/ 15 августа 2011

следующие две строчки сделали свое дело:

$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.

Извините, что пошло не так.

...