Php 如何替换字符串中的某些字符?

Php 如何替换字符串中的某些字符?,php,Php,假设我有一根这样的绳子 SOMETHING [1000137c] SOMETHING = John Rogers III [SOMETHING] SOMETHING ELSE 我需要把它变成这个 SOMETHING [1000137c] SOMETHING = John_Rogers_III [SOMETHING] SOMETHING ELSE 因此,我需要将“[1000137c]SOMETHING=”之后和“[”之前的单词之间的空格替换为“u”。在php中如何做到这一点 谢谢 $s = "

假设我有一根这样的绳子

SOMETHING [1000137c] SOMETHING = John Rogers III [SOMETHING] SOMETHING ELSE
我需要把它变成这个

SOMETHING [1000137c] SOMETHING = John_Rogers_III [SOMETHING] SOMETHING ELSE
因此,我需要将“[1000137c]SOMETHING=”之后和“[”之前的单词之间的空格替换为“u”。在php中如何做到这一点

谢谢

$s = "SOMETHING [1000137c] SOMETHING = John Rogers III [SOMETHING] SOMETHING ELSE";
$a = split(" = ",$s,2);
$b = split(' \[',$a[1],2);
$s = $a[0] . ' = ' . strtr($b[0],' ','_') . ' [' . $b[1];

print_r($s);
产生:

SOMETHING [1000137c] SOMETHING = John_Rogers_III [SOMETHING] SOMETHING ELSE

$arr=在“=”上拆分数组中的字符串 然后

使用类似于so的正则表达式“/^[\w]+[[\w\d]+][\w]+=([\w\d]+)[[\w\d]+][\w]+$/i”应该将匹配项1返回为“John Rogers III”,尽管这是基于当前示例


使用上述正则表达式的preg_replace_callback,您可以str_replace将回调函数中的空格替换为下划线。

我比您上面的解决方案更喜欢您的解决方案:)。这将产生类似于:John_Rogers_III_[SOMETHING]\u SOMETHING_ELSEThanks的smth,我将尝试让它工作。只是可能有多个“=”在字符串中。我们唯一可以确定的是,名称在“[1000137c]SOMETHING=”之后,1000137c不会重复。如果在所提到的子字符串之前没有“=”子字符串,这将起作用。如果它们在ithmm之后,一切都会正常工作……但是如果有“=”子字符串呢之前?那么它将不起作用,您将需要一个更好的函数来提取数据。您希望发布一系列精确的字符串,这将是生成此类函数的最佳帮助在“[1000137c]SOMETHING=John_Rogers_III[”之前和之后可能有各种各样的字符和子字符串。我们可以肯定的是,这个名称必须在“[1000137c]SOMETHING=”之后和“[”之前替换空格。
str_replace(" ", "_", $arr[1])