Home >Backend Development >PHP Tutorial >php中正则表达式怎么对字符串取反?

php中正则表达式怎么对字符串取反?

PHPz
PHPzOriginal
2016-06-13 11:37:482980browse

php中正则表达式怎么对字符串取反?

php中正则表达式怎么对字符串取反?

可以使用 断言(ASSERT) 实现

正则表达式的先行断言和后行断言一共有4种形式:

(?=pattern) 零宽正向先行断言(zero-width positive lookahead assertion)
(?!pattern) 零宽负向先行断言(zero-width negative lookahead assertion)
(?<=pattern) 零宽正向后行断言(zero-width positive lookbehind assertion)
(?

这里面的pattern是一个正则表达式。

PHP 断言

编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设,可以将断言看作是异常处理的一种高级形式。程序员断言在程序中的某个特定点该的表达式值为真。如果该表达式为假,就中断操作。

可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言,而在部署时禁用断言。同样,程序投入运行后,最终用户在遇到问题时可以重新起用断言。

使用断言可以创建更稳定,品质更好且不易于出错的代码。单元测试必须使用断言!

语法:

# PHP5
bool assert ( mixed $assertion [, string $description ] ) 

# PHP7
bool assert ( mixed $assertion [, Throwable $exception ] )

example1:

// 断言操作选项函数
assert_options(ASSERT_ACTIVE, 1); // 默认是打开断言的

assert(&#39;1==2&#39;); //  Warning: assert(): Assertion "1==2" failed in D:\wamp\www\XF9_Trunk_Website3.0\new\Public\index.php on line 3

echo 555555555555; // 默认情况下继续执行,对于调试很好,尤其是可以使用callback,但是生产环境就不建议使用了。

assert() 会检查指定的 assertion 并在结果为 FALSE 时采取适当的行动(视assert_options而定)。

assert_options

  • 'ASSERT_ACTIVE=1' // Assert函数的开关

  • 'ASSERT_WARNING =1' // 当表达式为false时,是否要输出警告性的错误提示,issue a PHP warning for each failed assertion

  • 'ASSERT_BAIL= 0' // 是否要中止运行;terminate execution on failed assertions

  • 'ASSERT_QUIET_EVAL= 0' // 是否关闭错误提示,在执行表达式时;disable error_reporting during assertion expression evaluation

  • 'ASSERT_CALLBACK= (NULL)' // 是否启动回调函数 user function to call on failed assertions

// Active assert and make it quiet
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_WARNING, 0);
assert_options(ASSERT_QUIET_EVAL, 1);

// Create a handler function
function my_assert_handler($file, $line, $code)
{
    echo "<hr>Assertion Failed:File &#39;$file&#39;<br />Line &#39;$line&#39;<br />Code &#39;$code&#39;<br /><hr />";
}

// Set up the callback
assert_options(ASSERT_CALLBACK, &#39;my_assert_handler&#39;);

// Make an assertion that should fail
assert(&#39;mysql_query("")&#39;);

安全性

function fo(){
 file_put_contents(&#39;a.php&#39;,&#39;www.bo56.com&#39;);
 return true;
}
$func = $_GET["func"];
assert("$func()");

如果 assertion 是字符串,它将会被 assert() 当做 PHP 代码来执行。跟eval()类似, 不过eval($assertion)只是执行符合php编码规范的$code_str。

更多相关知识,请访问 PHP中文网!!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn