正则表达式或 strcmp 在字符串中取一些词
regexp or strcmp to take some word in string
我是 php 的新手,从 C++ 来到这里,所以没有带有字符串等的 stl 库。
我正在寻找 explodes 和 implodes,想要实现这样的检查,比如我有相对路径或文件名,并且想检查它是否包含一些词,例如扩展名之前或最后一个的“-thumb”入口。然后只存储两个变量,带后缀和不带后缀。抽象目录包含两个文件:test_file.png、test_file-thumb.png,因为目录遍历函数将作为文件名传递,或者其中之一,我想确保是主文件在那里,在完成所有检查后,我调用了 StoreBothFiles 方法:
// this variables will comes from traverse function:
$file_name = __DIR__ ."test_file.png";
$postfix = "-thumb";
// explode will get name without extension add postfix and add extension
if ( is_file(file_name) && strpbrk($file_name, '-') == FALSE ) {
$name_noext = explode('.',$file_name, 2);
$file_thumb = $name_noext[0] . $postfix . "." . $photo_file_name_noext[1];
StoreBothFiles($file_name, is_file(file_thumb) ? $file_thumb : null);
}
但它适用于名称中带有“-”的所有文件,并且这种方法不适用于绝对路径,我进行了重构并且很好奇,也许可以使用一些正则表达式或更短的方式更有效地编写它类似这样的东西,没有搞乱 substr 和 strlen 与 while 循环?
在 PHP 中,对于像这样简单的任务,字符串函数通常优于正则表达式。
$image = 'myimage.jpg';
$ext = pathinfo($image, PATHINFO_EXTENSION); // jpg
$fname = pathinfo($image, PATHINFO_FILENAME); // myimage
$thumb = $fname . '-thumb.' . $ext; // myimage-thumb.jpg
echo substr(pathinfo($thumb, PATHINFO_FILENAME), -6, 6); // -thumb
我是 php 的新手,从 C++ 来到这里,所以没有带有字符串等的 stl 库。
我正在寻找 explodes 和 implodes,想要实现这样的检查,比如我有相对路径或文件名,并且想检查它是否包含一些词,例如扩展名之前或最后一个的“-thumb”入口。然后只存储两个变量,带后缀和不带后缀。抽象目录包含两个文件:test_file.png、test_file-thumb.png,因为目录遍历函数将作为文件名传递,或者其中之一,我想确保是主文件在那里,在完成所有检查后,我调用了 StoreBothFiles 方法:
// this variables will comes from traverse function:
$file_name = __DIR__ ."test_file.png";
$postfix = "-thumb";
// explode will get name without extension add postfix and add extension
if ( is_file(file_name) && strpbrk($file_name, '-') == FALSE ) {
$name_noext = explode('.',$file_name, 2);
$file_thumb = $name_noext[0] . $postfix . "." . $photo_file_name_noext[1];
StoreBothFiles($file_name, is_file(file_thumb) ? $file_thumb : null);
}
但它适用于名称中带有“-”的所有文件,并且这种方法不适用于绝对路径,我进行了重构并且很好奇,也许可以使用一些正则表达式或更短的方式更有效地编写它类似这样的东西,没有搞乱 substr 和 strlen 与 while 循环?
在 PHP 中,对于像这样简单的任务,字符串函数通常优于正则表达式。
$image = 'myimage.jpg';
$ext = pathinfo($image, PATHINFO_EXTENSION); // jpg
$fname = pathinfo($image, PATHINFO_FILENAME); // myimage
$thumb = $fname . '-thumb.' . $ext; // myimage-thumb.jpg
echo substr(pathinfo($thumb, PATHINFO_FILENAME), -6, 6); // -thumb