Php 在我的字符串周围找到未知字符串
我只想在两个空格之间的字符串周围找到未知文本。 例如:Php 在我的字符串周围找到未知字符串,php,Php,我只想在两个空格之间的字符串周围找到未知文本。 例如: $mystring = "blabalbla <b>sometext</b> <b>ssssss</b>" $mystring=“blabalbla sometext ssss” 我想用这个做什么: 我知道“sometext”,但我想在 <b>sometext</b>. sometext。 但我的字符串总是在变化,例如: <s><b>so
$mystring = "blabalbla <b>sometext</b> <b>ssssss</b>"
$mystring=“blabalbla sometext ssss”
我想用这个做什么:
我知道“sometext”,但我想在
<b>sometext</b>.
sometext。
但我的字符串总是在变化,例如:
<s><b>sometext</b></s>
sometext
现在我需要把所有的东西都放进一根绳子里
<s><b>sometext</b></s>.
sometext。
因此,我不能简单地将变量附加到
<b>.mystring.</b>
.mystring。
因为在这种情况下,我可以在它周围有未知的字符串
我该怎么做?或者有没有其他方法可以找到并删除这些内容
<b><s><i></b></s></i> etc.... around my string?
等。。。。绕着我的绳子?
Thnaks,screet.您可以使用正则表达式:
$mystring = preg_replace('/(^|\s)(?:<[^>]*>)*sometext(?:<[^>]*>)*(\s|$)/i', '$1'.$some_new_text.'$2', $mystring);
$mystring=preg_replace('/(^ |\s)(?:]*>)*sometext(?::*>)*(\s |$)/i','$1'.$some_new_text.$2',$mystring);
我根据你提供的测试了这个,它应该工作得很好。它自己处理文本,位于字符串的开头或结尾,并由无限数量的html实体包围
说明
- 匹配字符串的开头或空格
(^ |\s)
- 后跟零个或多个html节点
(?:]*>)*
- 它们位于非捕获组中,因此不会为它们分配组号
- 后跟已知字符串
- 如果您计划将此字符串设置为动态字符串,则需要使用
方法来转义任何特殊字符preg_quote
- 如果您计划将此字符串设置为动态字符串,则需要使用
- 后跟零个或多个html节点
(?:]*>)*
- 后跟空格或字符串的结尾
(\s |$)
- 不敏感地匹配大小写
(可选)/i
$1
和$2
中