Php preg_match_所有空匹配
我想匹配两个美元符号之间的任何字母和下划线,并得到匹配结果 例如: 我得到Php preg_match_所有空匹配,php,regex,Php,Regex,我想匹配两个美元符号之间的任何字母和下划线,并得到匹配结果 例如: 我得到,我想要url或$url$ 我尝试了以下两种模式 $pattern = "/\$([a-z\_]*)\$/i"; $pattern = "/\$(.*)\$/i"; // well, that's actually not what I want. preg_match_all($pattern, $line, $matches, PREG_PATTERN_ORDER); 好吧,这应该行得通——至少它在我身上行得通。但当
,我想要url
或$url$
我尝试了以下两种模式
$pattern = "/\$([a-z\_]*)\$/i";
$pattern = "/\$(.*)\$/i"; // well, that's actually not what I want.
preg_match_all($pattern, $line, $matches, PREG_PATTERN_ORDER);
好吧,这应该行得通——至少它在我身上行得通。但当我在我的应用程序中测试它时,它不会。我只是得到空的测试结果
array(2) { [0]=> array(2) { [0]=> string(0) "" [1]=> string(0) "" } [1]=> array(2) { [0]=> string(0) "" [1]=> string(0) "" } }
// ...
有什么想法吗
下面是我用来测试它的示例文本(我每行测试一次)
因为我对PHP不是很熟悉,所以我将发布我如何阅读的代码,以获得实际的字符串。也许我已经做错了什么
$file = file($filename);
for($i=0; $i<count($file); $i++){
$line = $file[$i];
preg_match_all("/\$([a-z]*)\$/i", $line, $matches);
var_dump($matches);
echo "<br/>";
}
$file=文件($filename);
对于($i=0;$i在正则表达式周围使用单引号:
preg_match_all( '/\$([a-z_]*)\$/i', $line, $matches );
让PHP退出模式。通常在双引号字符串中转义\$
就足够了,但当双引号字符串是正则表达式时显然不行。我认为问题不在于正则表达式,我在这里测试了@Upio,我也担心这一点。但老实说,我不知道会出现什么问题。
preg_match_all( '/\$([a-z_]*)\$/i', $line, $matches );