PHP正则表达式替换整个单词(俄语html文本)而忽略标签

时间:2017-08-16 19:50:13

标签: php regex

我想在一个用俄语写的html页面的字符串中构建一个PHP REGEX,用于搜索整个单词(在它之前不包含来自某些预定义列表的字母),以及用一个链接替换该单词,该链接大部分时间将在href属性中包含相同的单词。 如果它已经在tag中,它也不应该替换它。

例如:

要搜索和更改的词:создать

信件清单[Я,т,со]

Html字符串:

    <div class="wiki-p">
    Яндекс и Сбербанк подписали соглашение о намерениях создать совместное предприятие на базе Яндсоздатьекс Ясоздать.
    Маркета. Объединив инфраструктуру и технологии создать
Объединив инфраструктуру и <a href="#">технологии создать </a>
    </div>

输出应为:

<div class="wiki-p">
Яндекс и Сбербанк подписали соглашение о намерениях <a href="example.com/category/создать">создать</a> совместное предприятие на базе *Яндсоздатьекс*.
Маркета. Объединив инфраструктуру и технологии <a href="example.com/category/создать">создать</a>
Объединив инфраструктуру и <a href="#">технологии создать </a>
</div>

单词Яндсоздатьекс,其中包含单词保持不变, 还有Ясоздать,在单词

之前包含字母Я

我使用了以下正则表达式:

$regex = '~<[^>]*>(*SKIP)(*F)|\b'. $needle . '\b~';

它有3个问题:

1)它仅适用于英语,而不适用于其他语言

我尝试使用“/ u”,但没有成功。

2)它允许在标签内替换搜索到的字符串:

Before:
<a href="#"> testes создать </a>

After:
<a href="#"> testes <a href="#">создать </a></a>

3)如何检查信件中是否没有来自清单的信件?

除此之外,我读到在使用html数据时,最好使用DOMDocument对象解析器 - 为什么呢?

0 个答案:

没有答案