我正在使用PHP开关根据页面URL参数中传入的传入关键字包含某些文件.
例如,URL可以是: ...page.php?kw=citroen%20berlingo%20keywords
在页面内部,我想使用这样的东西:
<?
switch($_GET['kw']){
case "berlingo":
include 'berlingo.php'
break;
case "c4":
include 'c4.php';
break;
}
?>
Run Code Online (Sandbox Code Playgroud)
我想在第一种情况下做的是包含berlingo.php文件,如果关键字参数包含 berlingo,但它不必仅仅是该关键字.
例如,我想包括的berlingo.php文件,如果关键字berlingo,但也如它的citroen berlingo.
如何使用PHP case select(switch语句)评估给定字符串是否包含值?
谢谢.
只是想知道是否有人有关于"成本"的信息,包括一个包含100个类文件的大型(600K或更多)php文件.与自动加载单个文件(例如在找到匹配项之前搜索多个目录)相比,它真的有很大的不同吗?
APC缓存会让这个成本微不足道吗?
这可能只是一个非常愚蠢的问题,但我真的很沮丧,这不起作用.我有一个(home.php)包含的主文件<? include ("/production/fetch_order.php"); ?>.可以看出我正在尝试从home.php访问文件.该文件命名为fetch_order.php生产文件夹中的文件.我的道路是正确的,拼写也是绝对正确的.但是我最终得到了这个错误:
Warning: include(/production/fetch_order.php) [function.include]:
failed to open stream: No such file or directory in /path/to/home.php on line 119
Warning: include() [function.include]: Failed opening '/production/fetch_order.php'
for inclusion (include_path='.:/path/to/php/php5.3.6/lib/php') in
/path/to/home.php on line 119
Run Code Online (Sandbox Code Playgroud) 我刚刚将一个较大的php项目导入NetBeans.在顶级目录下,我有"app1","app2","app3"等(每个都映射到一个域名),然后是一个"共享"目录,用于(你猜对了)所有应用程序使用的文件.
在app1/route/Search.inc中它有:
include_once "../shared/lib/search.inc";
Run Code Online (Sandbox Code Playgroud)
但是这行上的ctrl-B什么也没做.有道理,从NetBeans的角度来看,作为一个大型应用程序,它应该是"../../shared/lib/search.inc".但是,对于应用程序的配置方式,上述内容是正确的,NetBeans是错误的.
我如何告诉NetBeans需要多出一个目录?
在Include Path下,我尝试添加"/ full/path/to/app1"(这样就可以找到"../shared/lib/")(我尝试了Private选项卡,然后是Shared选项卡,结果相同.)但是它拒绝,告诉我app1目录已经是应用程序的一部分.没有"做我说的话,不要考虑它,打耳光!" 按钮.
在文件系统中添加符号链接,仅适用于NetBeans,感觉有点难看.
我想知道我是否应该为每个应用程序制作一个NetBeans项目?(我实际上是先尝试过,但由于所有应用程序都在同一个git存储库中,它会产生很多噪音,所以我认为这是错误的方法.)
附加:我最感兴趣的是我的上一个问题的答案 - 将每个应用程序保持为单独的NetBeans项目是标准做法,即使它们都在同一个git存储库中吗?
Product Version: NetBeans IDE 8.0.2 (Build 201411181905)
Updates: NetBeans IDE is updated to version NetBeans 8.0.2 Patch 1
Java: 1.7.0_79; OpenJDK 64-Bit Server VM 24.79-b02
Runtime: OpenJDK Runtime Environment 1.7.0_79-b14
(on linux Mint 17)
Run Code Online (Sandbox Code Playgroud) 我有一个index.php文件,它通过PHP包含页面的不同部分.
例如,这包括HTML页面的<head>部分到index.php文件中:
<!doctype html>
<html>
<head>
<?php include($_SERVER['DOCUMENT_ROOT']."/PATH-TO-FILE/head.php"); ?>
</head>
<body>
...
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
"head.php"的内容可能是这样的:
<meta charset="utf-8">
<title>Title of page</title>
<meta name="description" content="Description text...">
...
<link rel="stylesheet" href="stylesheet.css">
...
and so on...
Run Code Online (Sandbox Code Playgroud)
从技术上讲,"head.php"不是PHP文件,因为它不包含任何PHP代码.它也不是有效的HTML文档.它只是一个HTML代码片段.
到目前为止,我总是将这些HTML代码片段文件命名为*.html或*.php.
我的问题是这是否正确?
是不建议不给它一个文件扩展名?而不是"head.php"只是"头"?
请记住,可以在服务器的.htaccess文件中设置某些指令,这些指令与*.html和*.php文件的缓存和到期有关.删除文件扩展名并将其从"head.php"重命名为"head"可能会将其从.htaccess文件中提到的指令中排除.
在搜索时我在StackOverflow上找到了这个问题: 我应该对包含HTML片段的文件使用什么扩展名
但是这个问题是在6年前被问到的,并且那里提到了很多不同的文件扩展名,很难说哪个可以使用.
任何人都可以提供有关此问题的最新答案吗?
我使用的是SuiteCRM 7.4.3,需要在整个项目实例中包含两个文件(一个PHP文件和一个JS文件).在这种情况下,最佳做法是什么?我应该在哪里复制源文件以及在哪里包含它们?
我来自PHP背景,但我决定在我的最新项目中试用NodeJS(可能还有Express).什么是PHP的替代品包括模板HTML页面?我习惯做:
<?php include('header.php'); ?>
Run Code Online (Sandbox Code Playgroud)
我试过谷歌搜索和搜索Stack Overflow,但找不到NodeJS的替代品.
对于网站上的每个页面,我都有一个页眉和页脚,所以我决定为两者创建一个模板,然后将它们包含在每个页面上.
<?php include_once("header.php")?>
contents of the page...
<?php include_once("footer.php")?>
Run Code Online (Sandbox Code Playgroud)
header.php 包含:
<!DOCTYPE html>
<head>
<title>Items Page</title>
<link rel="stylesheet" href="assets/css/item.css">
<script src="assets/css/item.js"></script>
</head>
<body>
<header>
contains a navigation bar
</header>
Run Code Online (Sandbox Code Playgroud)
footer.php 包含:
<footer>...</footer>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
上面的代码是针对Items页面的,但我也有Users页面,它们都有相同的页脚和标题标记,但不同的链接CSS和JS文件.如何改变<link>和<script>里面<head>的标签上header.php有文件,如果用户导航到用户页面,例如:mysite.com/user/blabla.
"用户"页面的正确链接应为:
<link rel="stylesheet" href="assets/css/user.css">
<script src="assets/css/user.js"></script>
Run Code Online (Sandbox Code Playgroud) 我所有的PHP包含文件都在一个目录中:
https://www.mywebsite.com/includes
Run Code Online (Sandbox Code Playgroud)
在顶级页面中插入这些文件非常简单:
<?php include 'includes/logo.php'; ?>
<?php include 'includes/main_nav.php'; ?>
<?php include 'includes/news.php'; ?>
etc.
Run Code Online (Sandbox Code Playgroud)
对于子目录页面,我一直这样做:
<?php include '../includes/logo.php'; ?>
<?php include '../includes/main_nav.php'; ?>
<?php include '../includes/news.php'; ?>
Run Code Online (Sandbox Code Playgroud)
还有这个:
<?php include '../../includes/logo.php'; ?>
<?php include '../../includes/main_nav.php'; ?>
<?php include '../../includes/news.php'; ?>
Run Code Online (Sandbox Code Playgroud)
到目前为止这么好,但我怀疑它不会继续这么容易.
现在我需要包含这个文件:
top_five_news_stories.php
Run Code Online (Sandbox Code Playgroud)
在这:
news.php
Run Code Online (Sandbox Code Playgroud)
此时,我的相对路径策略失败,因为include中的include只能有一个路径结构.
我已经阅读了几篇推荐使用绝对路径的帖子:
dirname(__FILE__)realpath(dirname(__FILE__)$_SERVER["DOCUMENT_ROOT"]但是,它们都带有与PHP配置,服务器配置或操作系统相关的某种警告.换句话说,通常有人评论说它在他们的情况下不起作用,或者在IIS中不起作用,或者在UNIX中不起作用,或者其他东西.
我没有看到的解决方案是我认为最简单的解决方案:只需设置一个变量:
$base = "https://www.mywebsite.com/includes";
Run Code Online (Sandbox Code Playgroud)
然后:
<?php include $base . "logo.php" ?>
Run Code Online (Sandbox Code Playgroud)
考虑到我已经使用了以类似方式工作的HTML base元素,这种方法让我觉得简单而有效.
但是因为在我读过的任何帖子中没有提到它,我想知道我是否忽视了一个潜在的问题.
坦率地说,如果我今天必须去制作,我会用这个:
<?php include $_SERVER['DOCUMENT_ROOT'] . '/logo.php" ?>
Run Code Online (Sandbox Code Playgroud)
这对我有用,通常被提及.
但我想知道使用变量是否是一种可靠,有效的方法?
我们在里面添加一个文件Myfile.php:
require_once 'abc.php';
Run Code Online (Sandbox Code Playgroud)
要么
include_once 'abc.php';
Run Code Online (Sandbox Code Playgroud)
我们将如何删除文件?或者如何abc.php在某段代码之后停止访问文件内容?
php ×10
php-include ×10
html ×4
javascript ×2
fragment ×1
html5 ×1
netbeans ×1
node.js ×1
path ×1
performance ×1
require-once ×1
string ×1
suitecrm ×1