PHP - 替换字符串中的Word(忽略HTML标记)

时间:2016-01-26 08:06:27

标签: php html regex

我有一个包含HTML标记的字符串,$paragraph

$paragraph = '
    <p class="instruction">
        <sup id="num1" class="s">80</sup>
        Hello there and welcome to Stackoverflow! You are welcome indeed.
    </p>
';

$replaceIndex = array(0, 4);
$word = 'dingo';

我想替换$replaceIndex $paragraph(0和4)定义的索引处的单词。通过这个,我的意思是我想用$word替换单词“80”和“welcome”(仅第一个实例)。段落本身可以在不同的地方使用不同的HTML标记进行格式化。

有没有办法在忽略(但不剥离)HTML标签的同时找到并替换字符串的某些单词?

谢谢!

编辑:单词由(多个)标签和(多个)空白字符分隔,而不包括标签内的任何内容。

3 个答案:

答案 0 :(得分:2)

感谢您的所有提示。我想到了!由于我是PHP的新手,如果任何PHP资深人士都有关于简化代码的任何提示,我会很感激。谢谢!

0 6652,

*唯一需要注意的是,这可能会在$ newParagraph中产生不需要的空格,但我会在实现代码时看到这是否会导致任何问题。

答案 1 :(得分:1)

$text = preg_replace('/\b80\b|\bwelcome\b/', $word, $paragraph);

希望这会对你有所帮助:)。

答案 2 :(得分:0)

SimpleXML也可以派上用场:

$paragraph = '
    <p class="instruction">
        <sup id="num1" class="s">80</sup>
        Hello there and welcome to Stackoverflow! You are welcome indeed.
    </p>
';

$xml = simplexml_load_string($paragraph);
$xml->sup = $word;