Skip to content

Instantly share code, notes, and snippets.

@sursir
Last active January 23, 2018 01:54
Show Gist options
  • Select an option

  • Save sursir/c247731c0a18519c3cfa35802687da7d to your computer and use it in GitHub Desktop.

Select an option

Save sursir/c247731c0a18519c3cfa35802687da7d to your computer and use it in GitHub Desktop.
php preg pcre 断言
<?php
$str = '<end><p><img src="nihao"><img src="nihao2"><img src="nihao3"><img src="nihao4"></p></end>';
// 后瞻断言使用
// ==========
// 使用后瞻断言 (?<=) 匹配 nihao
$str1 = preg_replace('/((?<=<end><p>)<img src=[^>]+>)/', '', $str);
echo $str1, PHP_EOL;
// 使用消极后瞻断言 (?<!) 匹配非 nihao
$str1 = preg_replace('/((?<!<end><p>)<img src=[^>]+>)/', '', $str);
echo $str1, PHP_EOL;
// 前瞻断言使用
// ==========
// 使用前瞻断言 (?=) 匹配 nihao3
$str2 = preg_replace('/(<img src=[^>]+>(?=<\/p><\/end>))/', '', $str);
echo $str2, PHP_EOL;
// 使用消极前瞻断言 (?<!) 匹配非 nihao3
$str2 = preg_replace('/(<img src=[^>]+>(?!<\/p><\/end>))/', '', $str);
echo $str2, PHP_EOL;
// 全部应用
// =======
// 全部使用 匹配两边
$str3 = preg_replace('/((?<=<end><p>)<img src=[^>]+>)|(<img src=[^>]+>(?=<\/p><\/end>))/', '', $str);
echo $str3, PHP_EOL;
// 全部使用 匹配中间
$str3 = preg_replace('/((?<!<end><p>)<img src=[^>]+>(?!<\/p><\/end>))/', '', $str);
echo $str3, PHP_EOL;
exit;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment