如何替换你只知道开始和结束的字符串?

时间:2018-01-12 14:32:11

标签: php regex string

我在php中有一个字符串,其中有一个标签:

$str = "bla bla {video something} bla bla";

其中something几乎可以是任何东西。

我现在想用{video something}替换<iframe id=123>。我想我需要一个正则表达式,但我有点迷失在整个正则表达式的东西。有人知道我怎么做吗?

欢迎所有提示!

2 个答案:

答案 0 :(得分:1)

<?php

$str = "bla bla {video something} bla bla";
$str=preg_replace ('/{(.*?)}/',"<iframe id=123>",$str);
echo $str;

此代码将查找花括号,并用iframe

替换它们中的所有内容

答案 1 :(得分:1)

如果您要替换以视频开头的提供字符串中的花括号之间的所有内容,您可以使用:

{(?=video.*?})(.*?)}

<强>解释

  • 匹配一个大括号{
  • 一个积极的向前看(?=video.*?}),断言接下来的是视频,直到一个大括号
  • 在群组中捕捉任何非贪婪的角色(.*?)
  • 匹配右括号}

例如:

$string = "bla bla {video something} bla bla";
$string = preg_replace ('/{(?=video.*?})(.*?)}/',"<iframe id=123>", $string);
echo $string;

Output