Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 拆下双方括号并保留字符串_Php_Regex - Fatal编程技术网

Php 拆下双方括号并保留字符串

Php 拆下双方括号并保留字符串,php,regex,Php,Regex,我需要删除字符串中的所有方括号并保留字符串。我一直在四处寻找,但是所有的主题OP都想用一些东西替换字符串 So:[[链接到页面]] 应该变成:链接到页面 我想我应该使用php正则表达式,有人能帮我吗 提前感谢您可以使用preg\u replace: $repl = preg_replace('/(\[|\]){2}/', '', '[[link_to_page]]'); $repl = str_replace(array('[[', ']]'), '', '[[link_to_page]]')

我需要删除字符串中的所有方括号并保留字符串。我一直在四处寻找,但是所有的主题OP都想用一些东西替换字符串

So:[[链接到页面]]

应该变成:链接到页面

我想我应该使用php正则表达式,有人能帮我吗


提前感谢

您可以使用
preg\u replace

$repl = preg_replace('/(\[|\]){2}/', '', '[[link_to_page]]');
$repl = str_replace(array('[[', ']]'), '', '[[link_to_page]]');
或使用
str\u replace

$repl = preg_replace('/(\[|\]){2}/', '', '[[link_to_page]]');
$repl = str_replace(array('[[', ']]'), '', '[[link_to_page]]');
试一试


您只需使用str_替换即可

$string = str_replace(array('[[',']]'),'',$string);

但这将得到一个'[['而不是']]'闭包。还有一个没有“[[”开头的“]]”。

你想要什么并不完全清楚,但是

如果您只是想“删除所有方括号”,而不必担心配对/etc,那么简单的str_替换即可:

str_replace( array('[',']') , ''  , $string )
这不是(也不需要)正则表达式


如果您想要展开包含未知内容的成对双括号,那么您需要的是正则表达式替换,它使用

由于
[
]
是正则表达式中的元字符,因此需要使用反斜杠对它们进行转义

要匹配双括号文本的所有实例,可以使用模式
\[\[\w+\[\]
,要替换这些括号,可以将内容放入捕获组(用括号括起来)并替换所有实例,如下所示:

$output = preg_replace( '/\[\[(\w+)\[\]/' , '$1' , $string );
\w
匹配任何字母数字或下划线-如果您想允许更多/更少的字符,可以对其进行更新,例如
\[\[([a-z\-\+)\[\]
或任何有意义的内容



如果要对方括号中的内容执行操作,请参阅。

如果只需要一个匹配项:

preg_match('/\[\[([^\]]+)\]\]/', $yourText, $matches);
echo $matches[1]; // will echo link_to_page
或者,如果要从文本中提取所有链接

preg_match_all('/\[\[([^\]]+)\]\]/', $yourText, $matches);
foreach($matches as $link) {
   echo $link[1];
}
如何阅读
'/\[\[([^\]]+)\]\]\]/'

  • /
    启动正则表达式
  • \[\[
    两个
    [
    字符,但需要转义它们,因为[是元字符
  • ([^\]]+)
    获取所有非
  • \]\]
    两个
    ]
    字符,但需要转义它们,因为]是元字符
  • /
    结束正则表达式

您想从全文中提取链接到页面,还是确定字符串以[[和]]开头(即仅包含[[链接到页面]])?str_替换为数组(“[”,“]])就是一个很好的例子。谢谢!