如何在PHP中从复杂的字符串中获取指令


How to get the instruction out of a complicated String in PHP

我有几个字符串序列。

<fn>Explode(<ltr>|</ltr>,<fld>SALTEST.ANUNCIO.ID_CIUDAD</fld>,<var>$P[1]</var>)</fn>
<fld>SALTEST.ANUNCIO.ESTADO </fld><fld>SALTEST.ANUNCIO.MUNICIPIO </fld><fld>SALTEST.ANUNCIO.CIUDAD</fld>
 <fld>SALTEST.ANUNCIO.ESTADO</fld><ltr>,</ltr> <fld>SALTEST.ANUNCIO.MUNICIPIO</fld><ltr>,</ltr><fld>SALTEST.ANUNCIO.CIUDAD</fld>

我把它发送到服务器,它就像一个指令到服务器,代表以下指令

对于第一个

  explode("|",SALTEST.ANUNCIO>ID_CIUDAD,$p[1]);

我该怎么做.

提前致谢

我会避免传入动态变量来创建代码......

但。。。您始终可以这样做:

$sOutputString = str_replace( array( '<fn>', '</fn>', '<ltr>', '</ltr>', '<fld>', '</fld>', '<var>', '</var>' ), '', $sInString );

为了提高效率:

$sJson = '{"fn":"Explode","ltr":"|","fld":"SALTEST.ANUNCIO.ID_CIUDAD","var":"$P[1]"}';
$aJson[ 'fn' ] = 'Explode';
$aJson[ 'ltr' ] = '|';
$aJson[ 'fld' ] = 'SALTEST.ANUNCIO.ID_CIUDAD';
$aJson[ 'var' ] = '$P[1]';
$sJson = json_encode( $aJson );
var_dump( $sJson );
$aJson = json_decode( $sJson, 1 );
var_dump( $aJson );

使用 preg_match()

<?php
$P[1] = 5;
$i = "<fn>explode(<ltr>|</ltr>,<fld>SALTEST.ANUNCIO.ID_CIUDAD</fld>,<var>$P[1]</var>)</fn>";
preg_match("!<fn>(.*)</fn>!",$i,$fn);
//Matches everything in <fn> block
//$fn[0] contains whole string and $fn[1] contains matched text.
preg_match("!<ltr>(.*)</ltr>!",$fn[1],$ltr);
preg_match("!<fld>(.*)</fld>!",$fn[1],$fld);
preg_match("!<var>(.*)</var>!",$fn[1],$var);
preg_match("!(.*)'(!",$fn[1],$cmd);

$cmd= $cmd[1];
$var=$var[1]+0;
$fld=$fld[1];
$ltr=$ltr[1];
//Execute
$cmd($ltr,$fld,$var);
?> 

注意:

1)我已经在输入中将Export更改为export,因为 PHP 中没有像导出这样的功能。

2)我已经初始化了$P[1],但如果你想让它是一个原始数组,那么首先从输入中匹配$P[1],然后使用正则表达式!(.*)[!匹配数组名称,此处为 P。再次使用正则表达式并匹配数组索引,然后提取所需的数组,然后将其设置为$var。

输出:http://ideone.com/LNC52n