使用preg_replace时如何忽略字符串中的一些单词

时间:2018-01-16 00:26:47

标签: php regex preg-replace

我想做的是

[/h1]

在这里,我想首先忽略<h1>This is Just a text, [h1]and this inside it</h1> This just example[/h1] 以使结果正确,我该如何实现?无论如何只有第一个和最后一个标签?

我不知道我应该做什么或试试,我还不够尝试,

被修改

输出

<h1>This is Just a text, <h1>and this inside it</h1> This just example</h1>

但我希望得到

#!/bin/sh

inotifywait -m -r /path/to/directory |
    while read path action file; do
            if [ <perform a check> ]
            then
                my_command
            fi
    done

2 个答案:

答案 0 :(得分:3)

如果您只想替换[h1]等字符串<h1>,则可以在不使用正则表达式的情况下实现所需的输出。

<?php
$var = "[h1]This is Just a text, [h1]and this inside it[/h1] This just example[/h1]";

echo str_replace(['[h1]', '[/h1]'], ['<h1>', '</h1>'], $var);

<强>结果:

<h1>This is Just a text, <h1>and this inside it</h1> This just example</h1>

https://3v4l.org/q9a41

答案 1 :(得分:2)

您可以创建自己的函数,然后使用preg_replace和limit 1,如下所示:

<?php
$var = "<h1>This is Just a text, [h1]and this inside it</h1> This just example[/h1]";

function replace_first($from, $to, $replace){
    $from = '/'.preg_quote($from, '/').'/';
    return preg_replace($from, $to, $replace, 1);
}

$output = replace_first('[h1]', '<h1>', $var);
$output = replace_first('[/h1]', '</h1>', $output);

// Output (HTML Source Code) will be <h1>This is Just a text, <h1>and this inside it</h1> This just example</h1>
?>

注意:这是第3次更新,但如果问题进一步更新,则可能无效。