用php快速的noob问题:
我正在尝试创建一个条件语句,我可以检查变量是否与子字符串部分匹配。
在我的案例中更具体:
$ cal是一个文件的名称,我想要它,所以如果$ cal包含“.cfg”,它会回复一些文字。
伪代码:
<?php if ($cal == "*.cfg")
{
echo "Hello ";
}
?>
答案 0 :(得分:6)
if (strpos($cal, ".cfg") !== false)
{
echo "some text";
}
修改强>
我提议完全匹配“* .cfg”:
$cal = "abc.cfgxyz";
$ext = "cfg";
if (strrpos($cal, ".".$ext) === strlen($cal)-strlen($ext)-1)
{
echo "matched";
}
答案 1 :(得分:3)
if ( preg_match('/\\.cfg$/',$cal) ) echo "Hello ";
应该这样。 (假设您想匹配输入字符串的结尾,否则,请忽略$
)
答案 2 :(得分:3)
在这种情况下,您只需使用substr
查看$cal
的最后四个字符:
if (substr($cal, -4) === '.cfg') {
echo "Hello ";
}
您应该查看正则表达式以了解更复杂的问题。
答案 3 :(得分:3)
对于简单模式,strpos可以很好地完成。
if (strpos ('.cfg', $string) !== false)
{
// etc
}
对于更复杂的parterns,你需要preg_match,它可以将字符串与正则表达式进行比较。
if (preg_match ('/.*?\.cfg/', $string))
{
// etc
}
前者提供更好的性能,但后者更灵活。
答案 4 :(得分:2)
您可以在此处使用各种方法。例如:
$cal = explode('.', $cal);
if(last($cal) === "cfg")) {
echo "Hello";
}
或使用正则表达式(例如,它可能比使用strpos慢):
if(preg_match("/\.cfg$", $cal)) {
echo "Hello";
}
老实说,我不知道explode()版本如何与带有负值(lonesomeday的答案)或strpos()(具有其缺陷,Frosty Z的答案)的substr()进行比较。可能substr()版本是紧固件,而正则表达式是执行此操作的最慢的方法)。