syd*_*ydo 3 php regex preg-replace
我想替换html文本的图像标记中的所有空格.
例:
<img src="photo 1.jpg" />
Run Code Online (Sandbox Code Playgroud)
至
<img src="photo%201.jpg"/>
Run Code Online (Sandbox Code Playgroud)
我没有找到preg_replace的灵魂,但它可能是一个简单的正则表达式线.谢谢!
编辑:对不起伙计们,我的描述不太清楚.所以,我有一个完整的html页面,我只想替换img标签内部.我不能在这里使用urlencode,因为它也编码其他东西.
编辑
我可能已经错过了这一点,如果你没有扫描已经写好的HTML,这可能不适合你.这是因为如果你因为某种原因而废弃它.我将它留给纯粹的怀旧之情,因为它可以帮助其他想要刮擦和更换的人.对困惑感到抱歉.
既然您知道标签和属性,我建议您查看PHP DOM来执行此操作.正则表达式可以做到这一点,但鉴于您正在考虑的上下文,DOM将是首选,可能更容易/更可靠.这将扫描生成的HTML并允许您替换属性内的项(在本例中src),使用rawurlencode()可以获得转换为%20的空格.
<?php
$dom = new DOMDocument();
// $dom->load('test.html'); // if in a file
$dom->loadHTML($html); // if in a string
for ($i=0; $i<$dom->getElementsByTagName('img')->length; $i++) {
$encoded = implode("/", array_map("rawurlencode",
explode("/", $dom->getElementsByTagName('img')
->item($i)->getAttribute('src'))));
$dom->getElementsByTagName('img')
->item($i)
->setAttribute('src',$encoded);
}
echo $dom->saveHTML();
Run Code Online (Sandbox Code Playgroud)
处理我的小测试文件,只是一个如何完成它的例子:)
该空间由url中的%20表示,但是您可能希望为其他图像转换其他字符,因此您应该使用常规urlencode函数,而不是使用OP中所述的"简单正则表达式".
<img src="<?php echo urlencode('file name.jpg'); ?>"/>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10494 次 |
| 最近记录: |