是否可以执行php命令,例如strtolower()
到preg_replace()
?
我想用小写字母组成一个数组,而另一个用大写字母组成。问题是字母是动态变化的并且不是固定的,只有一个字保持不变但其余字不相同。
e.g。
arraypart1(应保持大写)(constantword)+ arraypart2(两者都应改为小写字母)
arraypart2也在改变字符数。
答案 0 :(得分:0)
这并不是100%清楚你想做什么,但我认为它是如下:从一个字符串中提取单词,并根据它们在一个数组中的存在来提取小写/大写字母。 preg_replace_callback
会帮助你。
PHP 5.3及更高版本:
$initial = "Mary had a little lamb";
$toupper = array("Mary", "lamb");
$tolower = array("had", "any");
$out = preg_replace_callback(
"/\b(?P<word>\w+)\b/", // for every found word
function($matches) use ($toupper, $tolower) { // call this function
if (in_array($toupper, $matches['word'])) // is this word in toupper array?
return strtoupper($matches['word']);
if (in_array($tolower, $matches['word'])) // is this word in tolower array?
return strtolower($matches['word']);
// ... any other logic
return $matches['word']; // if nothing was returned before, return original word
},
$initial);
print $out; // "MARY had a little LAMB"
如果您有其他需要考虑的数组,请将它们放在use
语句中,以便它们在匿名函数中可用。
PHP&gt; = 4.0.5:
$initial = "Mary had a little lamb";
$toupper = array("Mary", "lamb");
$tolower = array("had", "any");
function replace_callback($matches) {
global $tolower, $toupper;
if (in_array($toupper, $matches['word'])) // is this word in toupper array?
return strtoupper($matches['word']);
if (in_array($tolower, $matches['word'])) // is this word in tolower array?
return strtolower($matches['word']);
// ... any other logic
return $matches['word']; // if nothing was returned before, return original word
}
$out = preg_replace_callback(
"/\b(?P<word>\w+)\b/", // for every found word
'replace_callback', // call this function
$initial);
print $out; // "MARY had a little LAMB"
如您所见,没有任何重大变化,我只是用命名的函数替换了匿名函数。要为其提供其他字符串数组,请使用global
关键字引用它们。
答案 1 :(得分:-1)
我希望我理解正确,preg_replace
是一个函数,就像你可以做的所有其他函数一样:
preg_replace(strtolower($val),$pattern,$someString);
使用小写版preg_replace
调用 $val