正则表达式删除管道符号前的括号和文本 - PHP

时间:2014-05-23 08:48:26

标签: php regex

我想要一个正则表达式来删除括号和文本,直到字符串

中的|符号

输入:hello [[aa-a]] bbb [[ccc|ddd]] eee [[fff|ggg]] hhh [[iii]] jjj

预期输出:hello [[aa-a]] bbb ddd eee ggg hhh [[iii]] jjj

我希望在文本字符串中存在此类模式的地方重复执行..

3 个答案:

答案 0 :(得分:1)

$html = '[[Erzbistum Köln | kirchlicher Macht]]';
preg_match('/\|(.*)]]$/', $html, $matches);
echo $matches[1]; //kirchlicher Macht

进行检查: -

if(preg_match('/\|(.*)]]$/', $yourstring)) {
  // do your stuff
}

答案 1 :(得分:1)

<?php
$text = 'Sitz weltlicher und insbesondere [[Erzbistum Köln|kirchlicher Macht]] trugen';
$text = preg_replace('/\[\[.*?\|(.*?)\]\]/', '\\1', $text);
echo $text;
?>

<强>输出:

Sitz weltlicher und insbesondere kirchlicher Macht trugen

答案 2 :(得分:0)

在这种情况下,您可以使用标准字符串函数,而不使用正则表达式。

示例:

<?php
$in = "[[Erzbistum Köln | kirchlicher Macht]]";
$out = substr( $in, strpos($in, "|") );
echo trim($out,"[]| ");

见结果:http://codepad.org/XsNVu6fJ

要更新案例,您可以使用此代码

<?php

$in = "Sitz weltlicher und insbesondere [[Erzbistum Köln|kirchlicher Macht]] trugen";
$out = preg_replace("/\\[\\[.+\\|(.+)\\]\\]/i", "$1", $in);

echo $out;

见结果:http://codepad.org/KVFcaO3K