错误:已弃用
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app" ng-controller="FirstCtrl as vm">
<form name="form">
<select name="folderId" ng-model="folder" data-ng-options="folder as folder.name for folder in folders track by folder.id"></select>
</form>
</div>
如何使用preg_replace_callback而不是preg_replace?我试图替换preg_replace并得到另一个错误。
PHP警告:preg_replace_callback():需要参数2,'strtoupper(“\ 0”)',才能成为
中的有效回调
答案 0 :(得分:1)
preg_replace_callback()应该指定一个精确的回调。 在此处查看有关preg_replace_callback()的更多信息:preg_replace_callback
if( preg_match('/([^:]+): (.+)/m', $field, $match) ) {
$match[1] = preg_replace_callback('/(?<=^|[\x09\x20\x2D])./e', function ($matches) {
return strtoupper("\0");
}, strtolower(trim($match[1])));
答案 1 :(得分:0)
您需要使用实际的回调。请尝试以下方法:
if( preg_match('/([^:]+): (.+)/m', $field, $match) ) {
$match[1] = preg_replace_callback('/(?<=^|[\x09\x20\x2D])./e', function($matches){return strtoupper("\0");}, strtolower(trim($match[1])));
回调可以是上面的匿名函数,也可以是函数的名称作为字符串。
注意: \e
修饰符已在php-5.5中弃用,并且已从php-7.0删除,您必须使用preg_replace_callback
,无论您身在何处使用\e
。点击此处了解详情。 Can someone explain the /e regex modifier?
答案 2 :(得分:0)
来自PHP documentation的preg_replace_callback
签名:
mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )
您需要传递一个回调函数作为第二个参数。
$html = $_POST['html'];
// uppercase headings
$html = preg_replace_callback(
'(<h([1-6])>(.*?)</h\1>)',
function ($m) {
return "<h$m[1]>" . strtoupper($m[2]) . "</h$m[1]>";
},
$html
);