kam*_*lot 0 php regex reverse function inverse
假设我有这个功能:
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;
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能扭转这个功能...即.我该如何编写函数fReverse(),以便我们有以下内容:
$s = f("some string223---");
$reversed = fReverse($s);
echo $s;
Run Code Online (Sandbox Code Playgroud)
和输出:一些string223 ---
f是有损的.找不到确切的反转是不可能的.例如,既"some string223---"和"some string223--------"给出相同的输出(参见http://ideone.com/DtGQZ).
不过,我们可以找到一个前映像f.5个替换f是:
[和之间的一切].<,{像和编码实体&lt;,以一个连字符-.<→ <,&→ &等)é(=é)→ e等)-.其中,1,2,4和5可能是同一性转换.因此,一个可能的原像只是反向步骤3:
function fReverse($string) {
return html_entity_decode($string, ENT_COMPAT, 'utf-8');
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
559 次 |
| 最近记录: |