@vGrabko99
html, css, js, php, golang, mysql

Как составить регулярку?

Есть регулярное выражение
$str = preg_replace("/href='([^']+)/","href='/ru$1", $str);

оно каждой ссылке добавляет /ru тоесть была ссылка
/go/start, а стала /ru/go/start.
У меня еть масив от яндекс переводчика
$langs['af'] = 'Африкаанс'; 
//...//
$langs['zh'] = 'Китайский';

Мне надо проверить есть ли у ссылки приставка которая содержыт любой ключ от масива.
//эту ссылку не заменяет так как есть приставка с ключём масива
/zh/go/start
//эту ссылку меняем так как ключ неверный 
/gogot/go/start
//а этой ссылке доставим так как она пуста
/go/start

Всем спасибо.
  • Вопрос задан
  • 126 просмотров
Решения вопроса 3
Melkij
@Melkij
PostgreSQL DBA
$str = preg_replace("~href='(?!/(?:af|zh|ru)/)([^']+)~","href='/ru$1", $str);

?
Ответ написан
Из массива $langs достаешь и конкатенируешь в строку через "|", суешь в регулярку. И проверяешь.
Ответ написан
Комментировать
@vGrabko99 Автор вопроса
html, css, js, php, golang, mysql
благодаря подсказкам выше сделал как то так
$reg_lang = '';
         foreach ($langs as $key => $value) {
           $reg_lang .='|'.$key;  
         }
         $str = preg_replace("~href='(?!/(?:af$reg_lang)/)([^']+)~","href='/ru$1", $str);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы