我想做类似的事情:
<?php
$text = "<font style='color: #fff'>";
$replaceandshow = str_replace("<font style=\"?\">", "the font style is ?", $text);
echo $replaceandshow;
?>
例如?是颜色:#fff,但我希望PHP会自己跟踪它,是否可能+如果可能,我该怎么做?
P.S:有人给了我一个代码,但它现在正在运行,它为我显示一个白页。<?php
$colorstring = "<font style='#fff'>";
$searchcolor = preg_replace('[a-fA-F0-9]{3,6}','[font style=$1]Test[/font]',$colorstring);
echo $searchcolor;
感谢您的帮助。
答案 0 :(得分:1)
由于您需要从任何HTML中提取任何属性,因此您可以使用php XML解析来执行此操作。
<?php
$doc=new DOMDocument();
$doc->loadHTML("<html><body>Test<br><font style='color: #fff;'>hellow</font><a href='www.somesite.com' title='some title'>some site</a></body></html>");
$xml=simplexml_import_dom($doc); // just to make xpath more simple
$fonts=$xml->xpath('//font');
foreach ($fonts as $font) {
echo 'font style = '.$font['style']."<br />";
}
$as=$xml->xpath('//a');
foreach ($as as $a) {
echo 'href = '.$a['href'] . ' title = ' . $a['title']."<br />";
}
?>
那将返回:
font style = color: #fff;
href = www.somesite.com title = some title
您可以为需要提取的每个HTML标记使用不同的foreach循环,然后输出您想要的任何属性。
根据How to extract img src, title and alt from html using php?
回答答案 1 :(得分:1)
您正在获取白页,因为错误报告已关闭。您的代码中的错误在preg_replace
中缺少分隔符。此外,要使用反向引用,您应该在括号中包含匹配所需的表达式。
preg_replace('/([a-fA-F0-9]{3,6})/','the font style is $1',$colorstring);
应给出正确的输出。
您可能会考虑使用更加紧缩的表达式,因为当前表达式非常适合匹配其他字符串,如“FFFont”。另一件需要注意的是,表达式可能会产生类似的输出。
<font style='color: the color is #fff'>
尝试:
/<font style='color: #([a-fA-F0-9]{3,6})'>/
答案 2 :(得分:0)
这适用于简单的style
属性:
$text = "<font style='color: #fff'>";
preg_match("/<font style=['\"]([^'\"]+)['\"]>/", $text, $matches);
echo "The font style is ".$matches[1];
对于更复杂的事情(例如:如果它包含引号),您需要使用HTML解析器,例如http://www.php.net/manual/en/class.domdocument.php