对于我的项目,我需要在Jenkins和Travis-CI之间做出选择.我多年来一直在使用Jenkins,但我也读过关于Travis-CI的好评.
您将在开源项目中使用哪一个?两者的主要好处或优点是什么?
我正在尝试使用DOMDocument解析一些HTML,但是当我这样做时,我突然失去了编码(至少这对我来说是这样).
$profile = "<div><p>various japanese characters</p></div>";
$dom = new DOMDocument();
$dom->loadHTML($profile);
$divs = $dom->getElementsByTagName('div');
foreach ($divs as $div) {
echo $dom->saveHTML($div);
}
Run Code Online (Sandbox Code Playgroud)
这段代码的结果是我得到了一堆不是日语的字符.但是,如果我这样做:
echo $profile;
Run Code Online (Sandbox Code Playgroud)
它显示正确.我尝试过saveHTML和saveXML,但都没有正确显示.我使用的是PHP 5.3.
我所看到的:
ã¤ãªãã¤å·ã·ã«ã´ã«ã¦ãã¢ã¤ã«ã©ã³ãç³»ã®å®¶åºã«ã9人åå¼ã®5çªç®ã¨ãã¦çã¾ãããå½¼ãå«ãã¦4人ã俳åªã«ãªã£ããç¶è¦ªã¯æ¨æã®ã»ã¼ã«ã¹ãã³ã§ãæ¯è¦ªã¯éµä¾¿å±ã®å®¢å®¤ä¿ã ã£ãã髿 ¡æä»£ã¯ãã£ãã£ã®ã¢ã«ãã¤ãã«å¤ãã¿ãæè²è³éãåããªããã«ããªãã¯ç³»ã®é«æ ¡ã¸é²å¦ã
Run Code Online (Sandbox Code Playgroud)
应该展示什么:
???????????????????????9????5???????????????4???????????????????????????????????????????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)
编辑:我已将代码简化为五行,以便您自己测试.
$profile = "<div lang=ja><p>???????????????????????</p></div>";
$dom = new DOMDocument();
$dom->loadHTML($profile);
echo $dom->saveHTML();
echo $profile;
Run Code Online (Sandbox Code Playgroud)
这是返回的html:
<div lang="ja"><p>イリノイ州シカゴã«ã¦ã€ã‚¢ã‚¤ãƒ«ãƒ©ãƒ³ãƒ‰ç³»ã®å®¶åºã«ã€</p></div>
<div lang="ja"><p>???????????????????????</p></div>
Run Code Online (Sandbox Code Playgroud) 当您限制通常在分页中使用的SQL查询返回的行数时,有两种方法可以确定记录总数:
SQL_CALC_FOUND_ROWS
在原始文件中包含该选项SELECT
,然后通过运行获取总行数SELECT FOUND_ROWS()
:
SELECT SQL_CALC_FOUND_ROWS * FROM table WHERE id > 100 LIMIT 10;
SELECT FOUND_ROWS();
Run Code Online (Sandbox Code Playgroud)
正常运行查询,然后通过运行获取总行数 SELECT COUNT(*)
SELECT * FROM table WHERE id > 100 LIMIT 10;
SELECT COUNT(*) FROM table WHERE id > 100;
Run Code Online (Sandbox Code Playgroud)
哪种方法最好/最快?
我搜索并阅读了大部分相关主题,但它们并不是我想要的.
我有一个带有json_encode
PHP函数的JSON enocded字符串:
{"casts":["Matthew Modine","Adam Baldwin","Vincent D'Onofrio"],"year":1987}
Run Code Online (Sandbox Code Playgroud)
我正在使用jQuery将值放在适当的字段中,在测试的情况下我做了以下操作:
<script>
var obj = jQuery.parseJSON('<?=$data?>');
console.log(obj);
</script>
Run Code Online (Sandbox Code Playgroud)
假设$ data是这样的:
$data =
<<<END
{"casts":["Matthew Modine","Adam Baldwin","Vincent D'Onofrio"],"year":1987}
END;
Run Code Online (Sandbox Code Playgroud)
在这种情况下,Google Chrome控制台会生成什么:
Uncaught SyntaxError: Unexpected identifier
Run Code Online (Sandbox Code Playgroud)
但是,当我对JSON编码的字符串进行更改时 - 将反斜杠添加到单引号:
{"casts":["Matthew Modine","Adam Baldwin","Vincent D\'Onofrio"],"year":1987}
Run Code Online (Sandbox Code Playgroud)
控制台输出正常:
Object {casts: Array[3], year: 1987}
casts: Array[3]
year: 1987
Run Code Online (Sandbox Code Playgroud)
问题是:控制台中的这个错误是预期的吗?我想逃避或更换'
有\'
会这么脏!
更新
实际上$ data数据来自a json_encode($var)
而$ var是一个数组!
$data = json_encode($var);
Run Code Online (Sandbox Code Playgroud) 我有一个共同的模式,我确信在PHP中必须有一个内置的数组函数来处理,但只是看不到它.
我有多个数组,如下所示:
$testArray = array (
'subArray1' => array(
'key1' => "Sub array 1 value 1",
'key2' => "Sub array 1 value 1"
),
'subArray2' => array(
'key1' => "Sub array 2 value 1",
'key2' => "Sub array 2 value 2"
)
);
Run Code Online (Sandbox Code Playgroud)
我需要key1
从每个subArray 获取值,其中可以有任何数字.
我总是最终只是循环遍历每个数组以获得所需的值,但我确信必须有一种更简单,更有效的方法来处理它.
我目前正在使用以下简单的foreach来解析数组:
$preparedSubs = array();
foreach($testArray as $subArray) {
$preparedSubs[] = $subArray['key1'];
}
Run Code Online (Sandbox Code Playgroud)
它尽可能短,但正如我所说,我确信有一个PHP结构可以更好地处理它.
这可能是重复的,因为我相信我已经看到了类似的东西但是找不到它所以我问:
我有很多具有多行的文件,在大多数情况下,其中一行包含某个patern.我想让每个文件都没有这个patern的行.
编辑:只需要使用"-L"grep选项.这是重复的,我敢肯定,但没有找到原来的背...
上下文:我使用的是名为Social Engine的软件包.这是非常错误的.
无论如何,我要求(甚至支付)社交引擎的人进行升级,当他们最终这样做时,我登录了网站,发现这些风格都缺失了.我打开了一张支持票,所有他们告诉我的是这是416错误并联系我的ISP.
通过测试位于软件中可写文件夹中的CSS文件的直接链接,可以发现此错误.
我开始做我的研究只发现这是一个非常罕见的错误,我看不到任何关于在我的Ubuntu 10.10 Linode服务器(运行安装了APC扩展的最新Apache和PHP5)上关闭转向范围的建议.也许这是一个软件问题?有些APC的缓存工作正常吗?我将此软件中的缓存重置为60秒,并确保它使用的是APC.仍然没有骰子.
这是他们的软件可能正在做的事情,我需要考虑修补?
我的数据中有许多HTML实体(•
...等),包括'
.我只是想把它转换为它的等价字符.
我假设htmlspecialchars_decode()会起作用,但是 - 没有运气.思考?
我试过这个:
echo htmlspecialchars_decode('They're here.');
Run Code Online (Sandbox Code Playgroud)
但它返回: They're here.
编辑:
我也尝试过html_entity_decode(),但它似乎不起作用:
echo html_entity_decode('They're here.')
Run Code Online (Sandbox Code Playgroud)
还返回: They're here.
在PHP文档中,它说:
然而,这种灵活性需要付出代价:生成器只是前向迭代器,一旦迭代开始就无法重绕.这也意味着同一个生成器不能多次迭代:生成器需要通过再次调用生成器函数来重建,或者通过clone关键字克隆.文档
但是我尝试编写一个克隆我从方法收到的生成器对象的代码,并且我收到一个错误,指出无法克隆生成器对象:
class Course {
private $students = array("avi" , "haim" , "maor" , "liran" , "yossi");
function generateStudents() {
foreach ($this->students as $student) {
yield $student;
}
}
}
$ob = new Course();
$generator = $ob->generateStudents();
// Fatal error: Trying to clone an uncloneable object of class Generator
$generator2 = clone $generator;
?>
Run Code Online (Sandbox Code Playgroud) 首先要做的事情:
在我将每个域名转换为IDNA版本之后,我将多个域存储到数据库中.我需要知道这样一个IDNA转换域名的最大长度,以便我可以定义数据库字段的最大长度.
已知事实:
现在,我知道域名(包括任何子域)中的最大字符数为255个字符.
我输了的地方:
乍一看这很容易,但是......这是否意味着国际字符的常规ascii字符(想想UTF-8编码)?
举个例子:当我忽略"ü"是一个需要更多字节来表示的国际字符时,域"müller.de"有9个字符."müller.de"的IDNA版本是"xn--mller-kva.de",有16个字符.这表明最大长度肯定存在差异,具体取决于"if"是否转换为IDNA.
根据它们的含义,最多255个字符可以是国际字符版本,IDNA转换版本,甚至两者.
这就是我失去它的地方......特别是,因为我必须考虑到并非所有领域都是理智的,像"öüßüöäéèê.example.äöüßüöäéèê-äöüßüöäéèê.test.äöüßüöäéèê.com"这样的东西,更糟糕的是被期望.
因此,"猜测"和"希望最好"不是一种选择.我需要确定...
问题是:
基于已知的事实,即域名(包括任何子域)中的最大字符数是255个字符... IDNA转换的域名的最大长度是多少?
或者他们是否意味着IDNA转换版本(punycode)也限制为255个字符(这意味着具有国际/ unicode字符的域实际上在其unicode表示中具有更短的限制,因为他们的IDNA转换版本将必须尊重255个字符限制)?