关于添加到网址的值,我看过很多帖子,但网址本身没有。
我正在使用WordPress插件(上帝这个标记很难过)并尝试从变量中删除部分目录,因为我正在使用一些htaccess魔法来重写客户端根目录。无论如何,这就是重点。
试图改变这一点:
href="/wp-content/themes/tray/img/celebrity_photos/photo.jpg"
成:
href="/img/celebrity_photos/photo.jpg"
所以我只是想从网址中删除 /wp-content/themes/tray/
。
这是插件的PHP代码,它为每个锚路径构建一个变量:
$this->imageURL = '/' . $this->path . '/' . $this->filename;
所以我想说:
$this->imageURL = '/' . $this->path -/wp-content/themes/tray/ . '/' . $this->filename;
PHP substr()
? strpos()
?谢谢你的帮助!
答案 0 :(得分:3)
鉴于:
$this->imageURL = '/' . $this->path . '/' . $this->filename;
$remove = "/wp-content/themes/tray";
这是删除已知前缀的方法,如果它存在:
if (strpos($this->imageURL, $remove) === 0) {
$this->imageURL = substr($this->imageURL, strlen($remove));
}
如果您某些它始终存在,那么您也可能会失去if
条件。
答案 1 :(得分:2)
这是一个选择:
$h="/wp-content/themes/tray/img/celebrity_photos/photo-on-4-6-12-at-3-23-pm.jpg";
$prefix="/wp-content/themes/tray/";
print str_replace($prefix, "/", $h, 1);
它有一个主要缺陷,即它不会将自己固定在$h
的左侧。要做到这一点,您需要使用正则表达式(处理时较重)或者在运行str_replace()
之前将其包装在检测前缀位置的内容中。
$h="/wp-content/themes/tray/img/celebrity_photos/photo-on-4-6-12-at-3-23-pm.jpg";
$prefix="/wp-content/themes/tray/";
if (strpos(" ".$h, $prefix) == 1)
$result = str_replace($prefix, "/", $h, 1);
else
$result = $h;
print $result;
请注意这个重要元素:前缀以斜杠结尾。你不想匹配其他主题,如“trayn”或“traypse”。注意为您的特定用例编写内容。总是试图找出代码可能会如何破解,并围绕有问题的假设用例进行编程。
答案 2 :(得分:1)
试试这个:
$href = str_replace("/wp-content/themes/tray","",$href);
或者在您的具体案例中,如下所示:
$this->imageURL = '/' . str_replace("/wp-content/themes/tray/","",$this->path) . '/' . $this->filename;