Php 使用str_replace和regex重写HTML锚
以下内容通过编辑器自动输出:Php 使用str_replace和regex重写HTML锚,php,regex,str-replace,Php,Regex,Str Replace,以下内容通过编辑器自动输出: <a href="https://someurl.com/1001-web-file.pdf">1001-web-file</a> 我设法做到的是: $replace = array( '<a id="pdfthumb" href="' => '<img src="', '.pdf">pdfthumb</a>' => '-pdf-290x300.jpg"/></br>' ); $
<a href="https://someurl.com/1001-web-file.pdf">1001-web-file</a>
我设法做到的是:
$replace = array(
'<a id="pdfthumb" href="' => '<img src="',
'.pdf">pdfthumb</a>' => '-pdf-290x300.jpg"/></br>'
);
$text = str_replace(array_keys($replace), $replace, $text);
return $text;
$replace=array(
''=>'-pdf-290x300.jpg/>'
);
$text=str_replace(数组_键($replace),$replace,$text);
返回$text;
这可以拆掉锚标记并重建为img。但我做不了更多。我使用一些正则表达式创建了一个通配符,并意识到我需要创建一个变量,以便href在重建HTML时使用,但我被卡住了
非常感谢您的任何见解:)在您的情况下,我认为如果您在客户端使用javascript进行操作,应该会更容易 我的背景不是PHP,但您可以使用相同的模式对PHP代码进行测试: 输入:
<a href="https://someurl.com/1001-web-file.pdf">1001-web-file</a>
输出:
<a href="https://someurl.com/1001-web-file.pdf"><img src="https://someurl.com/1001-web-file-pdf-290x300.jpg"/></a>
var输入=”;
var模式=/href=\“(.+)\.pdf\”/;
var match=input.match(模式)[1];
input=input.replace(/()*()/,“$1$2”);
console.log(input)
这里是翻译后的php代码
$input = '<a href="https://someurl.com/1001-web-file.pdf">1001-web-file</a>';
preg_match('/href="(.+)\.pdf"/', $input, $m);
$match = $m[1];
$input = preg_replace('/(<a.*>).*(<\/a>)/', '$1<img src="'. $match .'-pdf-290x300.jpg">$2', $input);
echo $input;
$input='';
preg_match('/href=“(.+)\.pdf”/',$input,$m);
$match=$m[1];
$input=preg_replace(“/()*()/”、“$1$2”、$input);
echo$输入;
谢谢:)因为我希望实现的服务器端是理想的。这工作非常完美!我想更好地理解此解决方案的每个部分。$m[1];
完成了什么?我知道它是在前面的行中设置的。$m
是如何实现的。()*()
工作?我知道*
匹配任何字符,您正在使用它重建HTML-如何添加ietarget=“\u blank”
?感谢您的反馈:D
<a href="https://someurl.com/1001-web-file.pdf"><img src="https://someurl.com/1001-web-file-pdf-290x300.jpg"/></a>
$input = '<a href="https://someurl.com/1001-web-file.pdf">1001-web-file</a>';
preg_match('/href="(.+)\.pdf"/', $input, $m);
$match = $m[1];
$input = preg_replace('/(<a.*>).*(<\/a>)/', '$1<img src="'. $match .'-pdf-290x300.jpg">$2', $input);
echo $input;