所以我有一个有效的 preg_match 模式来查找字符串中 HTML 属性的值,我需要用 preg_replace 做同样的事情——不是找到并返回值,而是用一个新的值替换它。
但是如果我只使用 preg_match 模式它不起作用......我被卡住了。
这是代码:
$string = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
width="437" height="288" id="viddler">
<param name="movie" value="http://www.viddler.com/player/1234567890/" />
<param name="allowScriptAccess" value="always" />
<param name="allowFullScreen" value="true" />
<param name="flashvars" value="fake=1"/>
<embed src="http://www.viddler.com/player/1234567890/"
width="437" height="288" type="application/x-shockwave-flash"
allowScriptAccess="always" allowFullScreen="true" flashvars="fake=1"
name="viddler" ></embed></object>';
preg_match("|<*[^>]*width=\"([^>]+)\"[^>]*>|Ui", $string, $results);
echo 'Width: '.$results[1];
Run Code Online (Sandbox Code Playgroud)
这有效并将返回437。但是,如果我在 preg_replace() 函数中使用相同的模式,它将删除整个<object>标签。我需要用其他任何东西替换那个 437,比如 200。当我们在做的时候,我还需要替换高度值。最后,这应该适用于任何嵌入代码或 iframe,因此它应该分别查找width="或height="......就像上面的 preg_match 示例一样。
任何帮助深表感谢。
编辑:蒂姆的解决方案如下
我让蒂姆的模式进行了一个小的修改:
$interm = preg_replace('|(<*[^>]*width=)"[^>]+"([^>]*>)|Ui', '\1"200"\2', $string);
$result = preg_replace('|(<*[^>]*height=)"[^>]+"([^>]*>)|Ui', '\1"300"\2', $interm);
Run Code Online (Sandbox Code Playgroud)
如果没有这个更改,第一个函数会替换宽度,但它会删除标签中之后的所有属性。 …
我想要一个正则表达式代码,将所有"foo"字符串替换为"bar",在html标签之前> </ pre>
这是一个例子:
< html>
< p> blah blah blah foo try foo< /p>
< pre> foo try foo word foofoo < /pre>
< /html>
Run Code Online (Sandbox Code Playgroud)
应该是
< html>
< p> blah blah blah foo try foo< /p>
< pre> bar try bar word barbar < /pre>
< /html>
Run Code Online (Sandbox Code Playgroud)
所以,这意味着pre之前的所有foo都应该替换为.
我试图使用这个正则表达式模式,但它无法正常工作.
do {
$string = preg_replace('/< pre>([^)]*)foo([^)]*< /pre>)/U', '\1boo\2', $string, -1,$count);
}while($count != 0);
echo $string;
Run Code Online (Sandbox Code Playgroud)
对不起我的英文谢谢你,
可能重复:
抓取A元素的href属性
我已经浏览了很多其他帖子,看到所有帖子都遵循一些固定的Anchor标签格式.他们中的大多数人都认为锚标签格式是<a href="http://www.example.com/">Hello</a>..也许是target后面的属性<a..但我正在尝试编写一个正则表达式来匹配锚标记的href,无论它出现在标记中的哪个位置.它可以出现在alt,title,target之后或者它们之间.还有另一种情况,锚标记使用单引号而不是双引号.
我已经尝试了半个小时而没有得到任何结果.所以在这里发布.
我最近一直在尝试从给定的 html 文件中提取列表信息,
例如,我有一个 html 页面,其中包含许多公司的列表,包括他们的电话号码、地址等'
每家公司都有自己的桌子,每张桌子都是这样开始的: <table border="0">
我尝试使用 PHP 获取所有信息,然后再使用它,例如将其放入 txt 文件中,或者只是导入到数据库中。
我认为实现目标的方法是使用正则表达式,这是我在 php 中真正遇到问题的事情之一,
如果你们能在这里帮助我,我将不胜感激。(我只需要知道要寻找什么,或者至少可以帮助我一点的东西,而不是完整的代码或类似的东西)
提前致谢!!
嗨,我的模式是:
'<span\s+id="bodyHolder_newstextDetail_nwstxtPicPane"><a\s+href="(.*)"\s+target="_blank"><img\s+alt="(.*)"\s+title="(.*)"\s+src=\'(.*)\'\s+/>'
Run Code Online (Sandbox Code Playgroud)
而字符串:
<div class="nwstxtpic">
<span id="bodyHolder_newstextDetail_nwstxtPicPane"><a href="xxxxx" target="_blank"><img alt="xxxxx" title="xxxxx" src='xxxxx' />
Run Code Online (Sandbox Code Playgroud)
好吧,我的用于查找和获取我在patern中定义的4个组的值的PHP代码是:
$picinfo=preg_match_all('/<span\s+id="bodyHolder_newstextDetail_nwstxtPicPane"><a\s+href="(.*)"\s+target="_blank"><img\s+alt="(.*)"\s+title="(.*)"\s+src=\'(.*)\'\s+/>/',$newscontent,$matches);
foreach ($matches[0] as $match) {
echo $match;
}
Run Code Online (Sandbox Code Playgroud)
我不知道如何获得这4组的价值
href="(.*)"
alt="(.*)"
title="(.*)"
src=\'(.*)\'
Run Code Online (Sandbox Code Playgroud)
你能帮我吗?谢谢.
可能重复:
如何使用PHP解析和处理HTML?
我希望能够使用preg_replace从HTML中删除内联css {}块.有人知道正则表达式吗?
UPDATE
我不会控制页面.我想从页面中删除所有标记,只留下内容.
我试图导出从我的数据库中获取的数据.
问题是数据带有html代码.
我只想导出没有HTML代码的数据.
注意:我的数据库没有任何HTML代码.
$exported_db_datas (全局数组变量)是这样创建的:
while($row = mysql_fetch_array($resultset,MYSQL_ASSOC))
{
$resultsarray[$rowcount] = $row;
$exported_db_datas[$rowcount] = $row;
/*foreach($resultsarray[$rowcount] as $column)
{
$resultsarray2[$rowcount][] = $column;
}*/
$rowcount++;
}
Run Code Online (Sandbox Code Playgroud)
出口代码:
$export_file = "export_phisto";
if ($format == "CSV")
{
$file = $export_file.".csv";
$separator = ",";
}
elseif ($format == "TAB")
{
$file = $export_file.".tab";
$separator = "\t";
}
elseif ($format == "TXT")
{
$file = $export_file.".txt";
$separator = "\t";
}
else// XLS
{
$file = $export_file.".xls";
$separator = "\t";
}
header("Content-Disposition: attachment; filename=\"$file\"");
header("Content-Type: …Run Code Online (Sandbox Code Playgroud) 我如何用PHP解析这个亚马逊产品页面并检索产品描述?
<div class="bucket">
<h2>Descrizione del prodotto</h2>
<div class="content">Taglia la corda per dare i bonbon al mostriciattolo ...</div>
</div>
Run Code Online (Sandbox Code Playgroud)
我需要使用类"content"将文本转换为div,但是此页面中有多个div,其中包含"bucket"和"content"类.
如何在PHP中对XML文件进行以下编辑.我基本上想保留一些元素并将这些元素写入新的XML文件.
所以,我知道如何打开新文件并准备编写,然后打开XML文件并逐行迭代:
$lines = fopen("file.xml", "r");
$new = fopen("newFile.xml", "w");
foreach($lines as $line){
/* operations on each line here */
}
Run Code Online (Sandbox Code Playgroud)
我不想对每一行进行操作,而是对file.xml中的某些元素进行操作.
我需要做的是对每个<doc>元素(之间的一切<doc>和</doc>):
echo "<doc>" 并打破$ new的新行.<title>和</title>包括标签美元的新.<url>和</url>包括标签美元的新.<abstract>和<abstract>包括标签美元的新.echo "</doc>" 并打破一个新的界限.然后转到下一个<doc> </doc>区块.
我非常感谢所有和任何帮助学习如何做到这一点.
php ×10
regex ×3
html ×2
export ×1
file ×1
page-title ×1
preg-match ×1
preg-replace ×1
tags ×1
title ×1
xml ×1
xml-parsing ×1