繁体   English   中英

使用正则表达式替换用引号引起来的字符

[英]Replace characters that are enclosed with quotes using a regular expression

如何用引号内的preg_replace替换字符?

我需要替换所有在href=""特殊字符。 例:

<a href="ööbik">ööbik</a> should become <a href="oobik">ööbik</a>

要替换“特殊字符”,您需要使用iconv$str = iconv('UTF-8', 'ASCII//TRANSLIT', $str);

至于获取引号之间的值,请参见其他答案。 使用preg_replace_callback对比赛进行上述转换。

编辑:一起喂所有东西:

<?php
$input = 'ööbik';
$expected = 'ööbik';

// Set the locale of your input here.
setlocale(LC_ALL, 'en_US');

// Convert using a callback.
$output = preg_replace_callback('/href="([^"]+)"/', function ($matches) {
    return iconv('UTF-8', 'ASCII//TRANSLIT', $matches[0]);
}, $input);

echo "Input:    $input\n";
echo "Expected: $expected\n";
echo "Output:   $output\n";

本示例假定PHP 5.3。 如果您使用的是PHP 5.2或更低版本,请使用“ create_function”或命名函数。

尽管Stack Overflow问题使用正则表达式在C#中查找带转义引号的带引号的字符串可能会帮助您找到带引号的文本,但我认为更好的解决方案是通过解析HTML字符串并使用其DOM来做到这一点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM