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

Php 使用正则表达式替换用引号括起来的字符,php,regex,preg-replace,Php,Regex,Preg Replace,如何用引号中的preg\u replace替换字符 我需要替换href=”“中的所有特殊字符。例如: <a href="ööbik">ööbik</a> should become <a href="oobik">ööbik</a> 应该成为 要替换“特殊字符”,您需要使用:$str=iconv('UTF-8','ASCII//TRANSLIT',$str) 至于获取引号之间的值,请参见其他答案。使用对匹配项执行上述转换 编辑:用勺子把所有东西放

如何用引号中的
preg\u replace
替换字符

我需要替换
href=”“
中的所有特殊字符。例如:

<a href="ööbik">ööbik</a> should become <a href="oobik">ööbik</a>
应该成为
要替换“特殊字符”,您需要使用:
$str=iconv('UTF-8','ASCII//TRANSLIT',$str)

至于获取引号之间的值,请参见其他答案。使用
对匹配项执行上述转换

编辑:用勺子把所有东西放在一起:

<?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";
要替换“特殊字符”,您需要使用:
$str=iconv('UTF-8','ASCII//TRANSLIT',$str)

至于获取引号之间的值,请参见其他答案。使用
对匹配项执行上述转换

编辑:用勺子把所有东西放在一起:

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

虽然堆栈溢出问题可能有助于您查找引用文本,但我认为更好的解决方案是通过解析HTML字符串并使用其进行处理。

虽然堆栈溢出问题可能有助于您查找引用文本,但我认为更好的解决方案是通过解析HTML字符串并使用其进行处理。

顺便说一句,我完全同意不使用正则表达式解析HTML。例如,此代码不适用于单引号href=''属性。例如,使用DOMDocument::loadHTML。我非常喜欢新用户来这里快速获得答案,然后使用vamoose!另外,我喜欢“vamoose”这个词。顺便说一句,我完全同意不使用正则表达式来解析HTML。例如,此代码不适用于单引号href=''属性。例如,使用DOMDocument::loadHTML。我非常喜欢新用户来这里快速获得答案,然后使用vamoose!另外,我喜欢“vamoose”这个词。我同意在HTML上使用regexp通常是个坏主意,但当您只需要从HTML文档中获取非常特定的字符串(如单个属性)时,使用regexp就可以了。同意,这取决于具体情况。我同意在HTML上使用regexp通常是个坏主意,但是,当您只需要从HTML文档中获取非常特定的字符串(如单个属性)时,regexp就可以了。同意,这取决于特定的情况。我的解决方案成功吗?我的解决方案成功吗?