我想用PHP DOMDocument更改标记属性的值.
例如,假设我们有这行HTML:
<a href="http://foo.bar/">Click here</a>
Run Code Online (Sandbox Code Playgroud)
我在PHP中加载上面的代码如下:
$dom = new domDocument;
$dom->loadHTML('<a href="http://foo.bar/">Click here</a>');
Run Code Online (Sandbox Code Playgroud)
我想使用PHP的DOMDocument扩展名将"href"值更改为"http://google.com/".这可能吗?
一如既往地感谢您的帮助!
我想使用html2canvas,但我不知道如何.
对Hertzen没有冒犯,他制作了一个很棒的剧本,但是文档不完整所以它没有用.
我查看了JSFeedback,但整个脚本(我不得不从HTML源代码中"窃取")仅适用于他的html2canvas版本,在评论中,他说这些版本尚未准备好开源.
任何帮助都将得到真正的赞赏 - Apparatix.
这不仅仅是一个难题.我实际上找到了一个解决方案,但它很慢,我以为我丢失了我的网络连接(见下文).
假设我有一系列数字,如下所示:
$numbers_array = array(1, 2, 3, 4, 5, 6, 7, 8, 9);
Run Code Online (Sandbox Code Playgroud)
我们还说我有一些数字,存储在变量中,如下所示:
$sum = 15;
$sum2 = 24;
$sum3 = 400;
Run Code Online (Sandbox Code Playgroud)
我正在尝试创建一个函数,如果$numbers_array可以将任何数字加在一起(每个只使用一次)以形成总和,则返回true :
function is_summable($array_of_nums, $sum_to_check) {
//What to put here?
}
var_dump(is_summable($numbers_array, $sum));
var_dump(is_summable($numbers_array, $sum2));
var_dump(is_summable($numbers_array, $sum3));
Run Code Online (Sandbox Code Playgroud)
以上应输出:
bool(true)
bool(true)
bool(false)
Run Code Online (Sandbox Code Playgroud)
因为7 + 8 = 15,7 + 8 + 9 = 24,但没有1-9的组合可以创建200.
这是我极其缓慢的解决方案:
function is_summable($numbers, $sum) {
//Sort provided numbers and assign numerical keys.
asort($numbers);
$numbers = array_values($numbers);
//Var for additions and var for …Run Code Online (Sandbox Code Playgroud) 说我有下表:
<table>
<tr>
<td>Example</td>
</td>One</td>
</tr>
<tr>
<td>Example</td>
</td>Two</td>
</tr>
<tr>
<td>Example</td>
</td>Three</td>
</tr>
<tr>
<!--
Here I want to skip the first <td> cell; use only second. Example:
<td>(empty, possibly )</td>
<td>blah blah blah</td>
-->
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)
如果您在最后一行中阅读了我的评论,您可以看到在最后一行中我想在表格的第二列中显示某些内容,其中第一列为空.我该怎么做呢?
作为旁注,我在这个SO问题中阅读了问题/答案,但是colspan与我想要的不同.我也不熟悉css empty-cell所以如果这是一个解决方案,请提供一些示例代码.
我在Node.js中有一个函数,它接受一个数组并循环遍历它,对每个元素进行一些耗时的计算.
这是该函数的超简化版本:
var analyze_data = function (data) {
data.forEach(function (elm) {
if (elm.myProp == true) {
return true;
}
});
return false;
}
Run Code Online (Sandbox Code Playgroud)
本质上,如果任何元素的属性myProp等于true ,我希望函数返回true.如果所有元素都不满足此条件,则该函数应返回false.
但是,代码永远不会等待forEach循环完成.换句话说,如果数组中的第100个元素满足条件,则该函数应返回true.相反,它会return false;在forEach循环有时间完成之前跳过并返回false .
这个问题有方法解决吗?
所以我意识到我过度简化了我的问题 - 我实际上使用的是Node.js包es6-promise,我的代码看起来更像是这样:
var analyze_data = function (data) {
return new Promise(function (resolve, reject) {
data.forEach(function (elm) {
if (elm.myProp == true) {
resolve(elm);
}
});
resolve(false);
});
}
Run Code Online (Sandbox Code Playgroud)
所以实际上,我没有在forEach函数中返回值而不是外部函数的问题.另外,请注意函数如何解析为元素本身而不是true,否则为false.我实际上想要返回一些相关数据,如果其中一个元素通过条件,否则返回false表示它们都失败了.
现在有什么想法?:p另外,感谢所有原始答案!
我想创建一组<style>标签并将其添加到HTML文档的head标签中.
我知道我可以这样开头:
$url_contents = file_get_contents('http://example.com');
$dom = new DOMDocument;
$dom->loadHTML($url_contents);
$new_elm = $dom->createElement('style', 'css goes here');
$elm_type_attr = $dom->createAttribute('type');
$elm_type_attr->value = 'text/css';
$new_elm->appendChild($elm_type_attr);
Run Code Online (Sandbox Code Playgroud)
现在,我也知道我可以像这样在HTML中添加新的样式标记:
$dom->appendChild($ss_elm);
$dom->saveHTML();
Run Code Online (Sandbox Code Playgroud)
但是,这将创建以下方案:
<html>
<!--Lots of HTML here-->
</html><style type="text/css">css goes here</style>
Run Code Online (Sandbox Code Playgroud)
以上基本上没有意义; CSS没有解析,只是坐在那里.
我在网上找到了这个解决方案(显然没有用):
$head = $dom->getElementsByTagName('head');
$head->appendChild($new_elm);
$dom->saveHTML();
Run Code Online (Sandbox Code Playgroud)
谢谢您的帮助!!
可能吗?
假设我让用户输入图像的 URL。
在 URL 验证等之后,我想获取图像并将其存储在 PHP 变量中。不是图像路径,而是实际图像本身。
我在其他字符串之间添加了这个图像保持变量,所以header()在回显图像之前我不能改变使用。是否可以使用<img>HTML 标签?我真的不想将图像复制到我自己的服务器...
我如何能:
我在上面说过我将此图像放入另一个变量中,例如:
$str = "blah blah" . $var_holding_img . "more text";
Run Code Online (Sandbox Code Playgroud)
是否可以在上面的字符串中插入一些将被图像替换的内容?可以$str稍后解析变量以用图像替换一些随机文本,如“abg30j-as”...
我有以下方法:
public static int arraySum(Object obj) {
}
Run Code Online (Sandbox Code Playgroud)
该方法应返回obj中所有元素的总和; 该方法的先决条件是,obj是任意尺寸的一个整数数组,即Integer,Integer[],Integer[][],等.
为了编写方法的主体arraySum(),我使用了foreach循环和递归; 但是,对于foreach循环,我需要知道obj的元素是哪种类型.有没有办法找出类型(即Integer,Integer[]的,等等)obj?
编辑:这是我的CS课程的作业.我不想简单地问如何编写方法,这就是我问这样一个特定问题的原因.
这是一个简单的问题.
我知道全局变量是在函数外声明时创建的(w3schools.com说).
我的问题是,如果我创建一个全局变量并在函数中编辑它,它是否变为本地变量?函数给出的新值是否成为全局值?
我的问题很简单.假设我有两个矩形图像.第一个是200px宽,100px高,第二个是100px宽和200px高.
我想显示具有恒定宽度/高度的图像,例如150px×150px而不拉伸图像以适合:

我不介意在图像周围有空格/填充.问题是图像可以是任何宽度和高度,我想将它们限制在一个方框而不拉伸它们.
以下CSS将图像拉伸到150px到150px:
img {
width: 150px;
height: 150px;
}
Run Code Online (Sandbox Code Playgroud)
最优选的解决方案是CSS,即使我需要更多标记.JS/jQuery也没关系.
当我尝试使用带有桌面Node shell的无头浏览器时,我收到了"模块版本不匹配错误".我用nw.js和atom-shell尝试过Zombiejs和Phantomjs; 在两种情况下,只要无头浏览器进入播放状态,应用程序就会因模块不匹配错误而崩溃.
这是Phantomjs和atom-shell的错误:
Uncaught Exception:
Error: Module version mismatch. Expected 41, got 14.
at Error (native)
at Object.module.(anonymous function) (ATOM_SHELL_ASAR.js:118:20)
at Object.module.(anonymous function) [as .node] (ATOM_SHELL_ASAR.js:118:20)
at Module.load (module.js:370:32)
at Function.Module._load (module.js:325:12)
at Module.require (module.js:380:17)
at require (module.js:399:17)
at bindings (/Users/Ajay/Projects/atom-shell/node_modules/phantom/node_modules/dnode/node_modules/weak/node_modules/bindings/bindings.js:76:44)
at Object.<anonymous> (/Users/Ajay/Projects/atom-shell/node_modules/phantom/node_modules/dnode/node_modules/weak/lib/weak.js:7:35)
at Module._compile (module.js:475:26)
Run Code Online (Sandbox Code Playgroud)
知道导致错误的原因是什么吗?
php ×4
javascript ×3
css ×2
domdocument ×2
html ×2
node.js ×2
variables ×2
add ×1
appendchild ×1
arrays ×1
attributes ×1
canvas ×1
dom ×1
echo ×1
electron ×1
foreach ×1
global ×1
html-table ×1
html2canvas ×1
image ×1
integer ×1
java ×1
local ×1
numbers ×1
nw.js ×1
object ×1
phantomjs ×1
screenshot ×1
store ×1
stretch ×1
sum ×1
synchronous ×1
tags ×1
zombie.js ×1