У меня есть строка, которая является построить так:preg_replace и '|' (OR) не работает в моем регулярном выражении
[propertyname]=[value]
И propertyname
и value
могут быть инкапсулированным одинарными или двойными кавычками.
Так я мог бы получить строку, которая выглядит следующим образом:
"height"='max'
или:
'height'='max'
Пока оба propertyname
и value
инкапсулируются того же типа кавычек.
Что мне нужно сделать, это удалить кавычки. Но только вокруг propertyname
и value
! Поскольку следующее вполне может быть действительной строкой тоже:
"blaat"="Some 'random' blaat"
Конечный результат должен быть:
blaat=Some 'random' blaat
У меня есть следующее регулярное выражение, которое работает. Но он работает только тогда, когда я проверяю двойные кавычки или одинарные кавычки. Когда я пытаюсь объединить их с оператором |
, он больше не работает.
<?php
$string = '"height"=\'something "else" in here\'';
//echo preg_replace ('#"(.*?)"#', '$1', $string);
//echo preg_replace ('#\'(.*?)\'#', '$1', $string);
echo preg_replace ('#("(.*?)"|\'(.*?)\')#', '$1', $string);
?>
Так что я мог бы просто сделать две preg_replace
звонки, но это неприятная работа вокруг рассматривает регулярное выражение должно быть в состоянии справиться с этим в одном вызове ...
Любая идея, что проблема?
Просто используйте символ класс вместо ' '# [' "] [ '# '] (*.?)"'. – Christoph