如何替换字符串中的某些字符?
假设我有这样的如何替换字符串中的某些字符?
SOMETHING [1000137c] SOMETHING = John Rogers III [SOMETHING] SOMETHING ELSE
一个字符串,我需要把它变成这个
SOMETHING [1000137c] SOMETHING = John_Rogers_III [SOMETHING] SOMETHING ELSE
为此我需要更换空格“_”字与字之间“[1000137c]以后有事= “和”[“之前。我怎么能在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 =在阵列中使用的正则表达式,像这样的 “=” 分割字符串,然后
str_replace(" ", "_", $arr[1])
我喜欢你的解决方案,而不是你上面的那个:)。 – Younes 2010-05-28 07:45:33
这会产生类似于: John_Rogers_III_ [SOMETHING] _SOMETHING_ELSE – 2010-05-28 07:47:42
“/^[\瓦特] + [[\ w \ d] +] [[\ w \ d] +] [\ w] + $/i“应该返回匹配1作为”约翰罗杰斯三世“,尽管这是基于当前的例子。
使用preg_replace_callback与上述正则表达式,您可以str_replace在回调函数中用下划线替换空格。
谢谢,我会尽力让它工作。只有在字符串中可以有多个“=”。我们唯一知道的是,这个名字是在“[1000137c] SOMETHING =”之后出现的,1000137c不再重复。 – 2010-05-28 07:47:46
这将工作,如果没有“=”子字符串_before_提到一个。一切都会正常工作,如果他们之后 – 2010-05-28 07:50:22
嗯......但如果之前有“=”呢? – 2010-05-28 08:24:13