我正在使用PHP并尝试解析从磁盘上的配置文件中获取的信息。这条线看起来像这样:
DELIMITER $$
CREATE PROCEDURE parent_reg(p_username VARCHAR(100),
p_password VARCHAR(200), p_email VARCHAR(200)
)
BEGIN
DECLARE mycount INT;
DECLARE myreturncode INT;
SELECT COUNT(pu.username)
INTO mycount
FROM `parent_user` pu
WHERE pu.username = p_username;
IF (mycount > 0 ) THEN
SET myreturncode = -1;
ELSE
SET myreturncode = 1;
INSERT INTO `parent_user` (`username`, `password`, `email`)
VALUES (p_username, p_password, p_email);
END IF;
SELECT myreturncode AS `ReturnValue`;
END$$
DELIMITER ;
我已尝试使用正则表达式或在php option ssh '-p 443 -i /root/.ssh/id_rsa -N -T -R 0.0.0.0:2222:localhost:22 root@example.com
下使用awk|cut
,但我没有取得任何成功。
我的理想回报值如下所示:
exec
如何使用RegEx从字符串中获取所需的参数?
答案 0 :(得分:2)
它并不漂亮,毫无疑问可以得到显着改善,但除了2222
???
$str="option ssh '-p 443 -i /root/.ssh/id_rsa -N -T -R 0.0.0.0:2222:localhost:22 root@example.com";
$pttn='#(-p (\d{1,3}) .*:(\d+):localhost:(\d+) ((\w+)@(.*)))#';
preg_match( $pttn, $str, $matches );
$response=array( 'user'=>$matches[6], 'port'=>$matches[2], 'host'=>$matches[7], 'lport'=>$matches[4], 'rport'=>$matches[3] );
print_r( $response );
outputs:
--------
Array
(
[user] => root
[port] => 443
[host] => example.com
[lport] => 22
[rport] => 2222
)
就像我说的那样,不是很漂亮但是......