我有一个preg_match表达式,如下所示,
$is = 'rest("docs/lasit_uct/iii_a_3_a_1_r.php?hostimage=&hostvista=")';
preg_match('/docs\/*.[^.php]*/', $is, $match);
result is => XXXX/YYYYY/hello_a_13_a_12_r
但是当我通过下面的其他论点时,
$is = 'rest("docs/lasit_uct/iii_a_3_a_1_i.php?hostimage=&hostvista=")';
preg_match('/docs\/*.[^.php]*/', $is, $match);
result is => XXXX/YYYYY/hello_a_13_a_12_
缺少最后一个字符'h'。这是为什么?。当我传递角色'p'时,我遇到了同样的问题。在获得h的表达式中我需要做的改变是什么。
我尝试了以下代码以获得正确的输出..但没有运气。
preg_match('/(docs\/.?).php/', $onClickLink, $match);
和
preg_match('/docs\/.+\((.+)(?=.php)/', $onClickLink, $match);
请就此提出建议
答案 0 :(得分:0)
使用以下正则表达式模式:
$re = '/docs\/.+\((.+)(?=.php)/';
preg_match($re, 'docs/test(XXXX/YYYYY/hello_a_13_a_12_h.php?t1=23&t2=45', $match);
print_r($match[1]);
输出:
XXXX/YYYYY/hello_a_13_a_12_h
(.+)(?=.php)
- 匹配字符序列(.+)
,后跟.php
(由先行肯定断言(?=.php)
确保)
答案 1 :(得分:0)
最后,我找到了一个表达式来获取输入参数的正确输出,
preg_match('/(docs.+)(?=.php)/', $input_string, $match);
感谢您的回复。上面的表达式一直返回预期的输出。