小编Ali*_*xel的帖子

针对PHP的Mechanize和BeautifulSoup?

我想知道是否有类似于Mechanize或BeautifulSoup for PHP的类似内容?

php python mechanize beautifulsoup

18
推荐指数
2
解决办法
2万
查看次数

PHP/Gettext问题

我记得几个月前使用gettext运行一些测试,以下代码完美运行:

putenv('LANG=l33t');
putenv('LANGUAGE=l33t');
putenv('LC_MESSAGES=l33t');

if (defined('LC_MESSAGES')) // available if PHP was compiled with libintl
{
    setlocale(LC_MESSAGES, 'l33t');
}

else
{
    setlocale(LC_ALL, 'l33t');
}

bindtextdomain('default', './locale'); // ./locale/l33t/LC_MESSAGES/default.mo
bind_textdomain_codeset('default', 'UTF-8');
textdomain('default');

echo _('Hello World!'); // h3110 w0r1d!
Run Code Online (Sandbox Code Playgroud)

这非常有效(如果我没记错的话,在Windows XP和CentOS下),这很好,因为我可以使用任意 "语言环境",而不必担心它们是否安装在系统上.然而,这似乎不再起作用,我想知道为什么......


Red Hat + PHP 5.2.11:

我可以在各种语言环境中来回切换,只要setlocale()调用没有返回false(如果系统上的语言环境可用/已安装),翻译就会显示相关内容.

这并不完美(如果我可以将gettext指向任意翻译目录而不必测试是否存在语言环境,那将是很好的),但这是可以接受的.我稍后会再进行一些测试.

Windows 7 + PHP 5.3.1(XAMPP):

setlocale()总是返回false(即使使用LC_ALL而不是LC_MESSAGES),除非我使用一些有效的Windows语言环境,例如eng,deuptg- 在这种情况下,语言环境似乎正确设置但翻译仍未显示.我现在无法测试,因为我已经打开了数百个标签但是我认为第一次调用该脚本会产生正确的转换(重启Apache不会起作用).

我不确定这是否与PHP Bug#49349有关.我将测试这是几个小时.


有没有办法在不同的操作系统中可靠地使用gettext扩展(不是纯PHP实现,如php-gettextZend Translate Adapter)(可能有自定义语言环境 …

php locale gettext zend-translate setlocale

18
推荐指数
2
解决办法
1万
查看次数

将PHP文件转换为二进制文件

是否可以将PHP文件转换为二进制文件并将其部署在Web服务器上?

php binary

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

这是用PHP发送电子邮件的正确方法吗?

我有点担心,如果这个功能发送的电子邮件可以在大多数电子邮件和网络邮件客户端上正确识别,特别是我最担心的是这个问题:

  • UTF-8声明和附件是否形成良好?
  • 我需要使用quoted_printable_decode()吗?如果是的话,在哪里?
  • 内容传输编码:7位还是8位?我总是看到7但是因为我发送的是UTF-8编码的邮件,我不确定.
  • 我应该使用mb_send_mail()还是mail()就够了?

编辑:我不知道为什么,但代码没有正确显示,我把它提供给@ http://gist.github.com/104818

编辑2:我知道其他替代方案(图书馆)的电子邮件处理,但为了我自己的好奇心和知识,我只想知道这个代码是100%好,还是它的错误.

function Email($name, $from, $to, $subject, $message, $bcc = null, $attachments = null)
{
    ini_set('SMTP', 'localhost');
    ini_set('sendmail_from', $from);

    $name = filter_var($name, FILTER_SANITIZE_STRING);
    $from = filter_var($from, FILTER_SANITIZE_EMAIL);
    $subject = filter_var($subject, FILTER_SANITIZE_STRING);

    $boundary = '_Boundary_' . md5(microtime(true) . mt_rand(0, PHP_INT_MAX));

    $headers = array
    (
        'MIME-Version: 1.0',
        'Content-Type: multipart/mixed; boundary="Mixed' . $boundary . '"',
        'Date: ' . date('r', time()),
        'From: "' . $name . '" <' . $from . '>',
        'Reply-To: "' . $name . '" …
Run Code Online (Sandbox Code Playgroud)

php email encoding utf-8

16
推荐指数
2
解决办法
8223
查看次数

创建小(<10位),而不是(非常)安全"哈希"的想法

我正在开发一个在线活动票务系统,用户可以自行打印他的票据并出现在将被扫描的事件(条形码),理想情况下,这个人会进入.我的问题是如何创建一个满足以下要求的"票证代码":

  • 每个"票证代码"需要彼此充分不同(即不按顺序编号)
  • 理想情况下,车票将与中心数据库,以避免重复使用进行检查,但它需要能够工作过太行,在这种情况下,系统必须检查是否有"有效"票代码和它没有在使用门.
  • "票证代码"必须足够小,以便在需要时方便键入
  • 持票人只需要门票进入(即没有身份证检查)

数据范围非常小,4天内只有大约20个活动,每个活动约5,000张门票(约100,000个不同的门票代码)

现在我有几个字段没有打印在故障单上,用户不知道我可以使用它来编码部分"票证代码",所以我可以使用EventId,OrderId,EventDate和一些盐来创建一个小的"哈希"部分代码(想法?),但我仍然坚持顺序或GUID(太长)的票证ID

那么关于如何做到这一点的任何想法或指示?

encryption hash encode checksum

16
推荐指数
3
解决办法
7628
查看次数

使用SMTP服务器发送BCC电子邮件?

我有一段时间记下了我的一些代码:

/**
 * Add a BCC.
 *
 * Note that according to the conventions of the SMTP protocol all
 * addresses, including BCC addresses, are included in every email as it
 * is sent over the Internet. The BCC addresses are stripped off blind
 * copy email only at the destination email server.
 *
 * @param string $email
 * @param string $name
 * @return object Email
 */
Run Code Online (Sandbox Code Playgroud)

我不记得从哪里得到它(可能的来源),但这不应该与这个问题相关.基本上,每当我尝试通过SMTP发送带有BCC的电子邮件时,BCC地址都不会被隐藏 - 我已经阅读了整个RFC的SMTP协议(几年前),我认为我什么都没有丢失.

奇怪的是,如果我使用内置mail()函数向BCC发送电子邮件,一切正常,我不知道为什么 - 我想推送自己的电子邮件发件人,但我不明白这一点.

有人可以对这个黑暗的主题有所了解吗?

php email smtp bcc

16
推荐指数
2
解决办法
3万
查看次数

什么是/ dev/arandom?

手册页说:

注意:从PHP 5.4.0开始,session.entropy_file默认为/dev/urandom或者/dev/arandom如果可用.在PHP 5.3.0中,该指令默认为空.

那么,/dev/arandom它与它有什么不同/dev/[u]random

php linux random session

16
推荐指数
1
解决办法
1744
查看次数

__VIEWSTATE包含什么?

我很抱歉可能会提出这样一个基本问题,但在ASP.NET网站上__VIEWSTATE输入字段代表什么?

另外,有没有办法计算它的值(基于其他表单字段的值)?

编辑

我理解__VIEWSTATE,顾名思义,维护网页中表单字段值的值,但我感兴趣的是如何生成这种状态(字符串).如果我base64_decode任何__VIEWSTATE字符串,我看到的是一堆神秘的HTML.

有没有办法更好地了解究竟是什么编码?我已经搜索了过去的问题,我发现了一些可以像这样做的工具,但不幸的是它似乎没有用.

我问这个的原因是因为我访问了一个Web服务API,它为我提供了我需要使用的大部分值.但是,我还需要一个仅在表单的最后一个阶段可用的附加字段.我已经联系了网络服务提供商但不幸的是他们不会很快更新他们的API.我希望我可以使用Web服务数据预填充表单初始值,然后计算__VIEWSTATE以访问在表单的最后一个阶段显示的最后一个字段,这将使整个过程更快.

不确定我是否让自己清楚了......

forms asp.net viewstate hidden-field

15
推荐指数
1
解决办法
2万
查看次数

i18n验证

Think Global,Act Local

这就是他们告诉你的,但是在我开发的所有时间里,我总是看到谷歌,微软,甲骨文等大公司以局部方式进行验证:他们知道我来自哪个国家,所以他们会尝试验证我的电话号码,邮政编码和其他详细信息,例如银行帐号以及我所在国家的正确验证方法.昨天我报名参加谷歌结账,他们甚至向我展示了我国的邮政编码格式的一些例子!

所以我的问题是,他们是如何做到的?我知道他们有成千上万的员工,但我发现很难相信他们都必须重新改造井.美国有无数的验证方法,但世界其他地方呢?我还没有看到一个开源的体面图书馆(除了非常不完整和过时的PEAR尝试之外)在各个国家的各个共同方面进行验证,例如:

  • 民事身份证
  • 税号
  • SSN(社会安全号码)
  • BBAN(基本银行账号)
  • 传真,电话和手机号码
  • 邮政编码
  • 车牌
  • 钞票序列号
  • 等等...

有什么隐藏的资源我不知道吗?

php language-agnostic validation localization internationalization

15
推荐指数
1
解决办法
1266
查看次数

在PHP中,如何生成一个大的伪随机数?

我正在寻找一种用PHP 生成一个随机数的方法,例如:

mt_rand($lower, $upper);
Run Code Online (Sandbox Code Playgroud)

我看到的距离越近gmp_random()但它不允许我指定下边界和上边界只有每个肢体的位数(我不知道它是什么).

编辑:Axsuuls答案似乎非常接近我想要的,非常类似于gmp_random,但在一个场景中似乎只有一个缺陷.

假设我不想在两者之间得到一个随机数:

  • 1225468798745475454898787465154

和:

  • 1225468798745475454898787465200

因此,如果函数名为BigRandomNumber():

BigRandomNumber($length = 31);
Run Code Online (Sandbox Code Playgroud)

这很容易返回超出指定边界的9999999999999999999999999999999.

如何使用最小/最大边界而不是长度值?

BigRandomNumber('1225468798745475454898787465154', '1225468798745475454898787465200');
Run Code Online (Sandbox Code Playgroud)

这应该返回1225468798745475454898787465 [154 .. 200]之间的随机数.

作为参考,我相信解决方案可能必须使用此问题中提供功能.

编辑:上面的帖子被删除了,这里是:

function compare($number1, $operator, $number2) {
  $x = bccomp($number1, $number2);

  switch($operator) {
    case '<':
      return -1===$x;
    case '>':
      return 1===$x;
    case '=':
    case '==':
    case '===':
      return 0===$x;
    case '!=':
    case '!==':
    case '<>':
      return 0!==$x;
  }
}
Run Code Online (Sandbox Code Playgroud)

php random gmp bcmath

15
推荐指数
2
解决办法
7183
查看次数