[英]reversing a regular expression in php
假设我有这个功能:
function f($string){
$string = preg_replace("`\[.*\]`U","",$string);
$string = preg_replace('`&(amp;)?#?[a-z0-9]+;`i','-',$string);
$string = htmlentities($string, ENT_COMPAT, 'utf-8');
$string = preg_replace( "`&([a-z])(acute|uml|circ|grave|ring|cedil|slash|tilde|caron|lig|quot|rsquo);`i","\\1", $string );
$string = preg_replace( array("`[^a-z0-9]`i","`[-]+`") , "-", $string);
return $string;
}
我该如何反转此功能...即。 我应该如何编写函数fReverse(),使我们具有以下内容:
$s = f("some string223---");
$reversed = fReverse($s);
echo $s;
输出:一些字符串223 ---
f
有损。 不可能找到确切的反向。 例如, "some string223---"
和"some string223--------"
给出相同的输出(请参阅http://ideone.com/DtGQZ )。
但是,我们可以找到f
原像。 f
的5个替代物是:
[
和]
之间的所有内容。 <
实体 , {
以及诸如&lt;
连字符-
。 <
→ <
, &
→ &
等) é
(==)→ e
等) -
。 其中,1、2、4和5可能是身份转换。 因此,一个可能的原像就是相反的步骤3:
function fReverse($string) {
return html_entity_decode($string, ENT_COMPAT, 'utf-8');
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.