Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在我的字符串周围找到未知字符串_Php - Fatal编程技术网

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