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

发布于 2024-08-25 11:22:17 字数 210 浏览 6 评论 0原文

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

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

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

How can I replace characters with preg_replace, that are enclosed in quotes?

I need to replace all special characters, that are in href="" things. Example:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

谈下烟灰 2024-09-01 11:22:17

要替换“特殊字符”,您需要使用 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”或命名函数。

To replace the "special chars", you need to use iconv: $str = iconv('UTF-8', 'ASCII//TRANSLIT', $str);

As for getting the values in between the quotes, see the other answers. Use preg_replace_callback to execute the conversion above on the matches.

EDIT: spoon-feeding everything together:

<?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";

This example assumes PHP 5.3. Use "create_function" or a named function if you are stuck on PHP 5.2 or below.

独守阴晴ぅ圆缺 2024-09-01 11:22:17

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

While the Stack Overflow question Finding quoted strings with escaped quotes in C# using a regular expression may help you finding quoted text, I think the better solution is to do this by parsing an HTML string and work with its DOM.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文