我正在尝试使用 preg_replace 将给定列表中的单词和单词序列包装起来。它几乎可以工作,但是在某些用例中它不起作用,我不知道该怎么做。
例如我这样做:
// sort by descending length
usort($this->_keywords, function($a,$b){return(strlen($a)<strlen($b));});
// wrapper is -%string%-
foreach ($this->_keywords as $keyword) {
$value = preg_replace('/((?!-)' . $keyword . '(?!-))/i', str_replace('%string%', '\1', $this->_wrapper), $value);
}
从此关键字列表中:
- 洛雷姆
- ipsum
- 坐下
- 空值
- sed
- sed enim
我想导致:
-Lorem- -ipsum- dolor -sit amet- , consectetur adipiscing elit。Phasellus rhoncus venenatis orci sed porta。Sed 非悲伤爱欲。Suspendisse a massa -sit amet- nulla egestas facilisis。Cras fringilla、leo ac ullamcorper semper、urna eros pretium lectus、nec rhoncus ligula risus eu velit。Nulla eu dapibus magna。Sed vehicula tristique lacinia。Maecenas tincidunt metus 在 urna consequat nec congue libero iaculis。Nulla facilisi。Phasellus -sedsem ut risus mattis accumsan eu -sed enim-。Pellentesque 居民 morbi tristique senectus et netus et malesuada 名声 ac turpis egestas。Suspendisse id est velit, eu cursus quam。Vivamus lacinia euismod pretium。
有任何想法吗?