如何將帶有引號的preg_replace
替換爲字符?使用正則表達式替換用引號引起來的字符
我需要替換所有特殊字符,即href=""
的東西。例如:
<a href="ööbik">ööbik</a> should become <a href="oobik">ööbik</a>
如何將帶有引號的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」或命名函數。
雖然堆棧溢出問題Finding quoted strings with escaped quotes in C# using a regular expression可以幫助你找到引用的文字,我認爲更好的解決方案是通過解析HTML字符串和工作,其DOM做到這一點。
我的解決方案有運氣嗎? – janmoesen 2010-03-12 14:52:53