STRING:
$string = '{$string#anything#something this string will output default |ucfirst|strtoupper}';
PREG_REPLACE_CALLBACK CODE(PHP):
$string = preg_replace_callback('/\{\$?([^# ]+)\#?([^ ]+)? ?([^|]+)?[ \|]?([^\}]+)?\}/', $matches, $string);
OUTPUT($ matches):
Array
(
[0] => {$string#anything#something can you hear me? |ucfirst|ucfirst|ucfirst|strtoupper}
[1] => string
[2] => anything#something
[3] => can you hear me?
[4] => ucfirst|strtoupper
)
要求:代替{$string this string will output default |ucfirst|strtoupper}
,我想使用{$string this string will output default ucfirst|strtoupper}
(注意:ucfirst
前方的管道标志已删除);
重要提示:输出(即$ matches数组)应与上面打印的相同。
非常感谢您的帮助,感谢您的阅读。
答案 0 :(得分:1)
我尝试改变你的功能代码......
代码
<pre>
<?php
$string = '{$string#anything#something this string will output default |ucfirst|strtoupper}'; http://www.magentocommerce.com/support/magento_core_api
preg_match('/\{\$?([^# ]+)\#?([^ ]+)? ?([^|]+)?[ \|]?([^\}]+)?\}/', $string, $matches);
var_dump($matches);
?>
</pre>
获得的结果
array(5) {
[0]=>string(80) "{$string#anything#something this string will output default |ucfirst|strtoupper}"
[1]=>string(6) "string"
[2]=>string(18) "anything#something"
[3]=>string(32) "this string will output default "
http://php.net/manual/en/function.preg-replace-callback.php [4]=>string(18) "ucfirst|strtoupper"
}
是否符合您的期望?我们应该更换“此字符串将输出”默认为“你能听见我吗?” 你想在ucfirst之前删除管道,你想在字符串中执行此操作并更新reg exp,如果是这样,那么识别''ucfirst''字符串的规则是什么(第一个管道之前的最后一个字符串? )
你想用preg_replace_callback做什么,这个函数会为每个找到的主题调用一个函数(你的$ matches参数)......这是你的想法吗?
链接文档:http://php.net/manual/en/function.preg-replace-callback.php