PHP-';包装'&书信电报;a>;标记任何<;img>;字符串中的标记
我需要在一个字符串中获取任何img标记,并在其周围添加一个a标记 例如PHP-';包装'&书信电报;a>;标记任何<;img>;字符串中的标记,php,preg-replace,domdocument,Php,Preg Replace,Domdocument,我需要在一个字符串中获取任何img标记,并在其周围添加一个a标记 例如 $content=“单击以获取更多信息”; 将需要替换为 "Click for more info <a href=\"http://www.domain.com/1.jpg\"<img src="\http://www.domain.com/1.jpg\"" /></a>"; “点击查看更多信息”; 我当前的脚本是: $content = $row_rsGetStudy['content
$content=“单击以获取更多信息”;
将需要替换为
"Click for more info <a href=\"http://www.domain.com/1.jpg\"<img src="\http://www.domain.com/1.jpg\"" /></a>";
“点击查看更多信息”;
我当前的脚本是:
$content = $row_rsGetStudy['content'];
$doc = new DOMDocument();
$doc->loadHTML($content);
$imageTags = $doc->getElementsByTagName('img');
foreach($imageTags as $tag) {
$content = preg_replace("/<img[^>]+\>/i", "<a href=\"$tag\"><img src=\"$tag\" /></a>", $content);
}
echo $content
$content=$row\rsGetStudy['content'];
$doc=新的DOMDocument();
$doc->loadHTML($content);
$imageTags=$doc->getElementsByTagName('img');
foreach($imageTags作为$tag){
$content=preg\u replace(“/]+\>/i”,”,$content);
}
echo$内容
这给了我以下错误:
可捕获的致命错误:类DomeElement的对象无法转换为字符串
有没有关于我哪里出错的想法?使用DOM方法,类似这样的方法(未经测试,自行调试;p)
$content是无法转换为字符串的对象。
要测试它,请使用
var\u dump($content)代码>
你不能直接回应它。
使用DOM提供的属性和方法,您可以从这里获得:getElementsByTagName
返回包含所有匹配元素的DOMNodeList对象。所以$tag在这里是DOMNodelist::item,因此不能直接用于字符串操作。您需要获得nodeValue
。按如下方式更改foreach代码:
foreach($imageTags as $tag) {
$content = preg_replace("/<img[^>]+\>/i", "<a href=\"$tag->nodeValue\"><img src=\"$tag->nodeValue\" /></a>", $content);
}
foreach($imageTags作为$tag){
$content=preg\u replace(“/]+\>/i”,”,$content);
}
我认为这里的DOMDocument不是从字符串加载HTML。一些奇怪的问题。我更喜欢使用DOM解析器,例如
您可以像这样使用它:
$content= 'Click for more info <img src="http://www.domain.com/1.jpg" />';
require_once('simple_html_dom.php');
$post_dom = str_get_html($content);
$img_tags = $post_dom->find('img');
$images = array();
foreach($img_tags as $image) {
$source = $image->attr['src'];
$content = preg_replace("/<img[^>]+\>/i", "<a href=\"$source\"><img src=\"$source\" /></a>", $content);
}
echo $content;
$content='点击查看更多信息';
require_once('simple_html_dom.php');
$post\u dom=str\u get\u html($content);
$img_tags=$post_dom->find('img');
$images=array();
foreach($img_标记为$image){
$source=$image->attr['src'];
$content=preg\u replace(“/]+\>/i”,”,$content);
}
echo$内容;
希望这有帮助:)在脚本中,$content是一个对象,preg\u replace只支持字符串和数组。更好的方法
foreach($imageTags as $tag) {
$content = preg_replace("/<img[^>]+\>/i", "<a href=\"$tag->nodeValue\"><img src=\"$tag->nodeValue\" /></a>", $content);
}
$content= 'Click for more info <img src="http://www.domain.com/1.jpg" />';
require_once('simple_html_dom.php');
$post_dom = str_get_html($content);
$img_tags = $post_dom->find('img');
$images = array();
foreach($img_tags as $image) {
$source = $image->attr['src'];
$content = preg_replace("/<img[^>]+\>/i", "<a href=\"$source\"><img src=\"$source\" /></a>", $content);
}
echo $content;