我想使用PHP在文件内容中搜索具有特定id的元素,替换其内容,然后将我的更改保存到文件中.我可以加载HTML,然后再将其保存回来,但是我遇到了'find and replace'(目前正在尝试使用preg_replace)的问题.
这是我到目前为止所拥有的:
<?php
// read in the content
$file = file_get_contents('file.php');
// parse $file, looking for the id.
$replace_with = "id='" . 'myID' . "'>" . $replacement_content . "<";
if ($updated = preg_replace('/id\=\"myID\"\>.*?\</', $replace_with, $file)) {
// write the contents of $file back to index.php, and then refresh the page.
file_put_contents('file.php', $updated);
}
Run Code Online (Sandbox Code Playgroud)
但是,虽然它成功加载内容并将其写出来(我已经通过写入单独的文件对其进行了测试),但似乎$ updated实际上并没有改变.
有任何想法吗?
我怀疑哪一个处理速度更快?
使用curl函数的dom文件或preg_match_all在html页面解析中更快?将dom文件功能留在其他服务器上如curl函数吗?例如,在curl函数中,我们使用用户代理来定义谁正在访问,但在dom文档中没有任何内容.
我是phpQuery的新手.我需要完成获取网页HTML TITLE标记内容的简单任务.在这种情况下,我试图获得"雅虎"的标题内容 应该是"雅虎".
我正在用phpQuery做这个,但它现在正在工作
// Testing phpQuery
$result = phpQuery::newDocumentFile($scraps['Scrap_yahoo']->getPage('http://www.yahoo.com','','off'))
->find('title');
echo $result->text();
Run Code Online (Sandbox Code Playgroud)
有人能给我一个如何实现这一目标的线索吗?
最好的祝福,
我有一个看起来像这样的html片段(当然包围其他html):
<p class="finfot3"><b>Header:</b></p>
<p>Text</p>
Run Code Online (Sandbox Code Playgroud)
我怎么能从中得到Text这个?我正在使用simple_html_dom,但如果simple_html_dom不能这样做,我可以使用其他东西.
我有一些随机的HTML布局,其中包含我想要提取的重要文本.我不能只是strip_tags()因为它会从侧边栏/页脚/标题/等中留下一堆额外的垃圾.
我发现了一个用Python构建的方法,我想知道在PHP中是否有这样的东西.
这个概念相当简单:如果一行文本值得输出,请使用有关文本密度与HTML代码的信息.(这不是一个新颖的想法,但它有效!)基本过程的工作原理如下:
- 解析HTML代码并跟踪处理的字节数.
- 以每行或每段为基础存储文本输出.
- 将每个文本行与描述它所需的HTML字节数相关联.
- 通过计算文本t> o字节的比率来计算每行的文本密度.
- 然后通过使用神经网络确定该行是否是内容的一部分.
只需检查线路的密度是否高于固定阈值(或平均值),您就可以获得相当不错的结果,但如果您使用机器学习,系统会减少错误 - 更不用说它更容易实现了!
更新:我开始获得一个可以从随机HTML模板中提取主要内容的答案.由于我无法共享我将使用的文档 - 只需选择任意随机博客网站并尝试从布局中提取正文.请记住,标题,侧边栏和页脚也可能包含文本.请参阅上面的链接以获取建议.
我正在寻找构建一个解析特定标签的 HTML 的 PHP 脚本。我一直在使用这个代码块,改编自本教程:
<?php
$data = file_get_contents('http://www.google.com');
$regex = '/<title>(.+?)</';
preg_match($regex,$data,$match);
var_dump($match);
echo $match[1];
?>
Run Code Online (Sandbox Code Playgroud)
该脚本适用于某些网站(例如上面的 google),但是当我在其他网站(例如,freshdirect)上尝试时,出现此错误:
“警告:file_get_contents(http://www.freshdirect.com)[function.file-get-contents]:无法打开流:HTTP 请求失败!”
我在 StackOverflow 上看到了很多很棒的建议,例如extension=php_openssl.dll在 php.ini 中启用。但是(1)我的 php.ini 版本中没有extension=php_openssl.dll,并且(2)当我将它添加到扩展部分并重新启动 WAMP 服务器时,每个线程,仍然没有成功。
有人会介意给我指出正确的方向吗?非常感谢!
我需要<title>使用插件更改或删除wordpress 中的标签,
例如<title> My old title </title>=><title> New title </title>
我试试看
function plugin_title($content){
$content=str_replace('My old title','New title',$content);
return $content;
}
add_filter('wp_head','plugin_title');
Run Code Online (Sandbox Code Playgroud)
//但它不起作用.任何的想法 ?
我正在努力获得一个简单的字符串替换工作在wordpress the_content函数.
<?php
$phrase = the_content();
$find = '<p>';
$replace = '<p style="text-align: left; font-family: Georgia, Times, serif; font-size: 14px; line-height: 22px; color: #1b3d52; font-weight: normal; margin: 15px 0px; font-style: italic;">';
$newphrase = str_replace($find, $replace, $phrase);
echo $newphrase;
?>
Run Code Online (Sandbox Code Playgroud)
它似乎<p>还在呼应.
代替 <p style="text-align: left; font-family: Georgia, Times, serif; font-size: 14px; line-height: 22px; color: #1b3d52; font-weight: normal; margin: 15px 0px; font-style: italic;">
我正在寻找一个HTML或XML解析器,让一个访问当前元素的偏移/位置中输入字符串或文件.
例如,如果遍历此字符串:
<div>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit</p>
<p>sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
</div>
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种方法来获取每个<p>标签的起始位置(包括空白),这里:7和72.
如果一个PHP解析器原生支持它会很棒(我看过这个SO问题中提到的DOM,XMLReader和其他库,但还没有找到方法)但是否则任何语言/框架都会精细.
注意:与此问题相关,但本地化程度较低.
是否可以使用PHP Simple HTML DOM Parser在一个simple_html_dom对象的头部添加一个新的脚本taga,该对象具有来自主页的完整html?
我需要在该模板中添加一些节点,其中一个节点是带有jquery的脚本标签,另一个是带有一些文本的div,我从数据库中提取.
我之前做过这样的事情:(使用DOMDocument)
$dom = new DOMDocument('1.0', 'UTF-8');
$dom->loadHTML($remote);
$head = $dom->getElementsByTagName('head')->item(0);
$jquery = '$(document).ready(function(){ $("#feed_home").hide()});
if (window.location.hash) {
Destino = window.location.hash.replace(\'#!\', \'?\');
window.location.href = window.location.href.split(\'#\')[0] + Destino;
}
';
$script = $dom->createElement('script', $jquery);
$script_type = $dom->createAttribute('type');
$script_type->value = 'application/javascript';
$script->appendChild($script_type);
$head->appendChild($script);
Run Code Online (Sandbox Code Playgroud) php ×10
regex ×3
dom ×2
title ×2
wordpress ×2
add-filter ×1
domdocument ×1
html ×1
html-parsing ×1
parsing ×1
phpquery ×1
plugins ×1
preg-replace ×1
replace ×1
savechanges ×1
tags ×1
text-parsing ×1