Normal bir ifade kullanarak tırnak içine karakterleri değiştirin

2 Cevap php

Nasıl tırnak içine alınır preg_replace ile karakterleri değiştirebilirsiniz?

I href="" şeyler tüm özel karakterleri, değiştirmeniz gerekir. Örnek:

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

2 Cevap

"Özel karakter" yerine, kullanmak gerekir iconv: $str = iconv('UTF-8', 'ASCII//TRANSLIT', $str);

Tırnak arasındaki değerler alma gibi, diğer cevaplarına bakınız. Maçlara yukarıdaki dönüşüm yürütmek için preg_replace_callback kullanın.

EDIT: kaşık-besleme herşeyi birlikte:

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

Bu örnek, PHP 5.3 varsayar. Eğer PHP 5.2 veya altında sıkışmış ise "create_function" veya adlandırılmış işlevini kullanın.

Sırasında yığın taşması soru 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.