【发布时间】:2014-12-14 19:27:20
【问题描述】:
我正在制作一个小型 linux 驱动的 PHP 实用程序,用于从 Windows 服务器获取网页和图像。除了文件名和引用之外,一切都运行良好。 Windows 不介意大写字母,但 linux 客户端介意。
提供的文件包含有时用大写字母引用的链接,有时不。
我正在使用大写字母保存所有文件,没有问题。
在使用 curl 将网页转换为字符串后,我希望确保“网页字符串”中的任何链接 - 到其他“内部”htmlpages 是正确的。
文件被引用为“A1.HTML”、“a23.hTmL”、“A123.htm”、“a2.html”、“a213.HTML”等。
常见的模式是:链接总是以(或 A)开头,后跟一个计数器(1 到 999)和扩展名 .html(或 .htm 或 .HTM 或 .HTML)
代码:
function get_url(){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $_SESSION['GETURL']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
// Now the page is stored in $output
// Replace a|A\d{1,999}\.[HTML|html|Html|htm|Htm|HTM] with A <NUMBER FROM BEFORE> <dot> HTML
// maybe use preg_replace
示例(问题页面“A3.HTML”):
之前:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML><HEAD><TITLE>MYTITLE</TITLE><META HTTP-EQUIV='refresh' content='8;URL=A3.HTML'> ...........
或:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML><HEAD><TITLE>MYTITLE</TITLE><META HTTP-EQUIV='refresh' content='8;URL=A3.html'> ...........
或:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML><HEAD><TITLE>MYTITLE</TITLE><META HTTP-EQUIV='refresh' content='8;URL=a3.HTML'> ...........
或:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML><HEAD><TITLE>MYTITLE</TITLE><META HTTP-EQUIV='refresh' content='8;URL=A3.HTML'> ...........
非常感谢任何帮助形成合适的函数以确保字符串格式的帮助。
提前致谢
/尼尔斯
【问题讨论】:
-
这不是操作系统的事情,而是文件系统的事情。 Windows/OS X 默认使用不区分大小写的格式,但 Linux 使用区分大小写的格式。可能的其他方法:使用不区分大小写的文件系统制作分区/磁盘映像/ram 磁盘并提供该文件夹。将所有文件名设为小写,并使用 mod_rewrite 之类的东西将请求的文件路径小写。
-
在 apache 中激活 mod_speling 也可以解决问题。