小编hak*_*kre的帖子

如何在PHP中验证电子邮件地址

我有这个功能来验证电子邮件地址:

function validateEMAIL($EMAIL) {
    $v = "/[a-zA-Z0-9_-.+]+@[a-zA-Z0-9-]+.[a-zA-Z]+/";

    return (bool)preg_match($v, $EMAIL);
}
Run Code Online (Sandbox Code Playgroud)

这可以检查电子邮件地址是否有效吗?

php regex email email-validation

205
推荐指数
8
解决办法
29万
查看次数

如何在PHP中对多维数组进行排序

我将CSV数据加载到多维数组中.这样,每个"行"都是一个记录,每个"列"包含相同类型的数据.我正在使用下面的函数加载我的CSV文件.

function f_parse_csv($file, $longest, $delimiter)
{
  $mdarray = array();
  $file    = fopen($file, "r");
  while ($line = fgetcsv($file, $longest, $delimiter))
  {
    array_push($mdarray, $line);
  }
  fclose($file);
  return $mdarray;
}
Run Code Online (Sandbox Code Playgroud)

我需要能够指定要排序的列,以便重新排列行.其中一列包含格式为的日期信息,Y-m-d H:i:s我希望能够以最近的日期为第一行进行排序.

php sorting multidimensional-array

198
推荐指数
6
解决办法
17万
查看次数

为PHP项目设置部署/构建/ CI周期

我大部分时间都是单独的开发人员,从事一些大型的,主要是基于PHP的项目.我希望专业化和自动化如何处理代码库的更改,并创建一个持续集成过程,使过渡在团队中工作,而不必进行根本性的更改.

我现在正在做的是,我为每个项目都有一个本地测试环境; 我为每个项目使用SVN; 更改在本地进行测试,然后通常通过FTP传输到联机版本.API文档是从源代码手动生成的; 单元测试是我慢慢进入的,它还不是我日常工作的一部分.

我想象的"构建周期"将执行以下操作:

  • 在本地测试后,变更集将被检入SVN.

  • 我开始构建过程.SVN HEAD修订版将被检出,必要时进行修改,并准备上传.

  • API文档会自动生成 - 如果我还没有详细设置,使用默认模板,扫描整个代码库.

  • 新修订通过FTP部署到远程位置(包括一些目录重命名,chmodding,导入数据库,和喜欢.)这是我已经喜欢phing非常多,但我很开放的,当然选择.

  • 运行驻留在预定义位置的单元测试.我被告知他们使用电子邮件,RSS或(最好)HTML输出的失败或成功,我可以抓取并放入网页.

  • (可选)预定义位置的最终用户"changelog"文本文件使用提交消息的预定义部分进行更新("现在可以同时过滤"foo"和"bar"此消息不一定与SVN提交消息相同,后者可能包含更多内部信息.

  • 像代码指标,代码样式检查等等东西现在不是我的主要关注点,但从长远来看,它们肯定会.带来这种开箱即用的解决方案非常受到关注.

我在寻找

  • 来自或处于类似情况的人的反馈和经验,并已成功实施此解决方案

  • 特别是,关于如何设置它的好的分步教程和演练

  • 提供尽可能多的自动化的解决方案,例如为每个新项目创建框架API,测试用例等.

并且

  • 产品推荐.到目前为止,我所知道的是用于构建的phing/ant,以及用于报告部分的phpUnderControlHudson.我尽可能地喜欢它们,但我当然没有详细的经验.

忙于工作,所以我倾向于简单的解决方案.另一方面,如果缺少一个功能,我会因为它太有限而哭泣.:)欢迎使用点击式解决方案.我也是可以使用PHP项目的商业产品推荐.

我的设置

我在本地工作Windows(确切地说是7),大多数客户端项目都在LAMP堆栈上运行,通常在共享主机上运行(=没有远程SSH).我正在寻找可以在我自己的环境中运行的解决方案.我准备为此设置一个Linux VM,没问题.托管解决方案对我来说很有意思,只要它们提供了所描述的所有方面,或者足够灵活,可以与流程的其他部分进行交互.

赏金 我接受了我觉得会给我最多里程的答案.这里有很多很棒的输入,我希望我能接受不止一个答案.感谢大家!

php phing continuous-integration phpundercontrol

198
推荐指数
4
解决办法
4万
查看次数

如何为命令行PHP脚本触发XDebug探查器?

XDebug提供配置指令"xdebug.profiler_enable_trigger",允许通过在通过HTTP调用脚本时传递GET或POST参数"XDEBUG_PROFILE"来激活分析.如果您不想对所有脚本进行性能分析,但仅针对少数特殊情况而不总是更改PHP配置,则这很方便.

有没有办法实现命令行PHP程序的相同行为?我试图将"XDEBUG_PROFILE"作为命令行参数传递,但它不起作用.

通常,分析命令行PHP运行良好,但我希望具有与浏览器和HTTP服务器相同的每次调用灵活性.

有什么建议?

php configuration command-line profiling xdebug

189
推荐指数
6
解决办法
8万
查看次数

从SimpleXMLElement对象获取值

我有这样的事情:

$url = "http://ws.geonames.org/findNearbyPostalCodes?country=pl&placename=";
$url .= rawurlencode($city[$i]);

$xml = simplexml_load_file($url);
echo $url."\n";
$cityCode[] = array(
    'city' => $city[$i], 
    'lat' => $xml->code[0]->lat, 
    'lng' => $xml->code[0]->lng
);
Run Code Online (Sandbox Code Playgroud)

它应该从geonames下载XML.如果我这样做,print_r($xml)我得到:

SimpleXMLElement Object
(
    [code] => Array
        (
            [0] => SimpleXMLElement Object
                (
                    [postalcode] => 01-935
                    [name] => Warszawa
                    [countryCode] => PL
                    [lat] => 52.25
                    [lng] => 21.0
                    [adminCode1] => SimpleXMLElement Object
                        (
                        )

                    [adminName1] => Mazowieckie
                    [adminCode2] => SimpleXMLElement Object
                        (
                        )

                    [adminName2] => Warszawa
                    [adminCode3] => SimpleXMLElement Object
                        (
                        )

                    [adminName3] …
Run Code Online (Sandbox Code Playgroud)

php simplexml

189
推荐指数
5
解决办法
22万
查看次数

我无法将父目录添加到 Git 中的 *safe.directory*

更新 Git 后,v2.35.2.windows.1出现以下错误:

致命:不安全的存储库('F:/GitHub/my-project' 由其他人拥有)
要为此目录添加例外,请调用:

git config --global --add safe.directory F:/GitHub/my-project

我尝试将项目的父目录添加到.gitconfig,但它不起作用。

[safe]
    directory = F:/GitHub/
    directory = F:/Private/
Run Code Online (Sandbox Code Playgroud)
  • 有解决方法吗?
  • “‘x’ 属于其他人所有”到底是什么意思?

我不想将我正在处理的每个项目都添加到该.gitconfig文件中。

git cve-2022-24765

188
推荐指数
12
解决办法
21万
查看次数

奇怪的PHP错误:'不能在写上下文中使用函数返回值'

我收到了这个错误,我无法做出它的头或尾.

确切的错误消息是:

致命错误:第48行/home/curricle/public_html/descarga/index.php中的写入上下文中无法使用函数返回值

第48行是:

if (isset($_POST('sms_code') == TRUE ) {
Run Code Online (Sandbox Code Playgroud)

谁知道发生了什么?

PS这是完整的功能,如果有帮助:

function validate_sms_code() {

    $state = NOTHING_SUBMITED;

    if (isset($_POST('sms_code') == TRUE ) {
        $sms_code = clean_up($_POST('sms_code'));
        $return_code = get_sepomo_code($sms_code);

        switch($return_code) {

          case 1:
            //no error
            $state = CORRECT_CODE;
            break;

          case 2:
            // code already used
            $state = CODE_ALREADY_USED;
            break;

          case 3:
            // wrong code
            $state = WRONG_CODE;
            break;

          case 4:
            // generic error
            $state = UNKNOWN_SEPOMO_CODE;
            break;

          default:
            // unknown error
            $state = UNKNOWN_SEPOMO_CODE;
            throw new Exception('Unknown sepomo code: …
Run Code Online (Sandbox Code Playgroud)

php fatal-error

179
推荐指数
6
解决办法
20万
查看次数

PHP错误消息"通知:使用未定义的常量"是什么意思?

PHP在日志中写入此错误:"注意:使用未定义的常量".

日志错误:

PHP Notice:  Use of undefined constant department - assumed 'department' (line 5)
PHP Notice:  Use of undefined constant name - assumed 'name' (line 6)
PHP Notice:  Use of undefined constant email - assumed 'email' (line 7)
PHP Notice:  Use of undefined constant message - assumed 'message' (line 8)
Run Code Online (Sandbox Code Playgroud)

相关代码行:

$department = mysql_real_escape_string($_POST[department]);
$name = mysql_real_escape_string($_POST[name]);
$email = mysql_real_escape_string($_POST[email]);
$message = mysql_real_escape_string($_POST[message]);
Run Code Online (Sandbox Code Playgroud)

它是什么意思,我为什么看到它?

php constants undefined

149
推荐指数
3
解决办法
57万
查看次数

在PHP中将数组作为参数传递,而不是数组

我似乎记得在PHP中有一种方法可以将数组作为函数的参数列表传递,将数组解引用为标准func($arg1, $arg2)方式.但是现在我迷失了怎么做.我记得通过引用传递的方式,如何"传递"传入的参数...但不是如何将数组取消列表到参数列表.

它可能很简单func(&$myArgs),但我很确定不是这样.但是,遗憾的是,到目前为止,php.net手册尚未透露任何内容.并非我在过去一年左右不得不使用这一特定功能.

php arrays methods function

142
推荐指数
4
解决办法
9万
查看次数

如果第一个响应是AppCache(Symfony2)的私有,这样可以吗?

我正在尝试使用http缓存.在我的控制器中,我按如下方式设置响应:

$response->setPublic();
$response->setMaxAge(120);
$response->setSharedMaxAge(120);
$response->setLastModified($lastModifiedAt);
Run Code Online (Sandbox Code Playgroud)

开发模式

在开发环境中,第一个响应是带有以下标题的200:

cache-control:max-age=120, public, s-maxage=120
last-modified:Wed, 29 Feb 2012 19:00:00 GMT
Run Code Online (Sandbox Code Playgroud)

在接下来的2分钟内,每个响应都是304,包含以下标题:

cache-control:max-age=120, public, s-maxage=120
Run Code Online (Sandbox Code Playgroud)

这基本上是我所期望的.

刺激模式

在prod模式下,响应头是不同的.请注意,在app.php中,我将内核包装在AppCache中.

第一个响应是200以下标题:

cache-control:must-revalidate, no-cache, private
last-modified:Thu, 01 Mar 2012 11:17:35 GMT
Run Code Online (Sandbox Code Playgroud)

所以这是一个私有的无缓存响应.

每一个下一个请求都是我所期望的那样; 带有以下标题的304:

cache-control:max-age=120, public, s-maxage=120
Run Code Online (Sandbox Code Playgroud)

我应该担心吗?这是预期的行为吗?

如果我把Varnish或Akamai服务器放在它面前会发生什么?

我做了一些调试,我认为响应是私有的,因为最后修改过的头文件.HttpCache内核使用EsiResponseCacheStrategy来更新缓存的响应(HttpCache :: handle()方法).

if (HttpKernelInterface::MASTER_REQUEST === $type) {
    $this->esiCacheStrategy->update($response);
}
Run Code Online (Sandbox Code Playgroud)

如果EsiResponseCacheStrategy 使用Last-Response或ETag(EsiResponseCacheStrategy :: add()方法),则将响应转换为非缓存:

if ($response->isValidateable()) {
    $this->cacheable = false;
} else {
    // ... 
}
Run Code Online (Sandbox Code Playgroud)

如果存在Last-Response或ETag标头,则Response :: isValidateable()返回true. …

caching cache-control http-caching symfony

141
推荐指数
2
解决办法
6267
查看次数