找到我的字符串周围的未知字符

时间:2011-08-02 07:07:15

标签: php

我只是想在两个空格之间找到我的字符串周围的未知文本。 例如:

$mystring = "blabalbla <b>sometext</b> <b>ssssss</b>"

我想用这个做什么:

我知道“sometext”但我想把字符串放在

<b>sometext</b>.

但是我的字符串总是在变化,例如它可以是:

<s><b>sometext</b></s>

现在我需要把整个变成一个字符串

<s><b>sometext</b></s>.

所以我不能简单地将我的变量附加到

<b>.mystring.</b> 

如果我的周围有不明字符串的情况,请注意。

我该怎么做?或者是否有另一种方法来查找和删除

<b><s><i></b></s></i> etc....  around my string?

Thnaks,Creep。

1 个答案:

答案 0 :(得分:0)

您可以使用正则表达式:

$mystring = preg_replace('/(^|\s)(?:<[^>]*>)*sometext(?:<[^>]*>)*(\s|$)/i', '$1'.$some_new_text.'$2', $mystring);

我对你所提供的内容进行了测试,应该可以很好地运行。它处理文本在其自身,字符串的开头或结尾处,并由无限数量的html实体包围。

<强>描述

  • 匹配字符串的开头或空格(^|\s)
  • 后跟零个或多个html节点(?:<[^>]*>)*
    • 这些是非捕获组,因此不会为其分配组号
  • 后面跟着已知的字符串
    • 如果您计划将此字符串设置为动态字符,则需要使用preg_quote方法来转义任何特殊字符
  • 后跟零个或多个html节点(?:<[^>]*>)*
  • 后跟空格或字符串(\s|$)
  • 的结尾
  • 不区分大小写/i(可选)

请注意,在替换字符串$1$2上添加了前导和尾随空格(如果有)。