Замените символы, которые заключены в кавычки, используя регулярное выражение - PullRequest
0 голосов
/ 11 марта 2010

Как заменить символы на preg_replace, заключенные в кавычки?

Мне нужно заменить все специальные символы, которые есть в href="" вещах. Пример:

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

Ответы [ 2 ]

4 голосов
/ 11 марта 2010

Чтобы заменить «специальные символы», вам необходимо использовать iconv : $str = iconv('UTF-8', 'ASCII//TRANSLIT', $str);

Что касается получения значений между кавычками, см. Другие ответы. Используйте <a href="http://php.net/preg_replace_callback" rel="nofollow noreferrer">preg_replace_callback</a>, чтобы выполнить приведенное выше преобразование для совпадений.

РЕДАКТИРОВАТЬ: кормить все вместе ложкой:

<?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. Используйте «create_function» или именованную функцию, если вы застряли на PHP 5.2 или ниже.

0 голосов
/ 11 марта 2010

Хотя вопрос переполнения стека Поиск строк в кавычках с экранированными кавычками в C # с использованием регулярного выражения может помочь вам найти текст в кавычках, я думаю, что лучшим решением будет сделать это с помощью синтаксического анализа HTML-строка и работа с ее DOM .

...