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

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

PHPz
Freigeben: 2020-09-04 14:36:18
Original
2986 Leute haben es durchsucht

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 ] )
Nach dem Login kopieren

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,但是生产环境就不建议使用了。
Nach dem Login kopieren

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;);
Nach dem Login kopieren

安全性

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

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

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

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage