2016-10-11 2 views
0

У меня есть следующая проблема: мне нужно заменить все точки с запятой внутри строки, которая появляется только между буквами с косой чертой. Проблемы состоят в том, что у меня также есть html-объекты с точкой с запятой, а str_replace испортит их.Заменить точку с запятой между буквами в PHP

Пример строки:

Category A > Subcategory A;Category A > Subcategory B;Category B > Subcategory C 

Желаемый результат:

Category A > Subcategory A/Category A > Subcategory B/Category B > Subcategory C 
+6

HTML-расшифровывает строку перед выполнением замены? – David

ответ

1

Чтобы заменить точкой с запятой только между письмом, вам может использовать regex lookahead и lookbehind.

$str = "Category A > Subcategory A;Category A > Subcategory B;Category B > Subcategory C"; 
$str = preg_replace("/(?<!\s);(?!\s)/", "/", $str); 
echo $str; 

или если ваш HTML сущности только &gt;, то вы можете использовать код ниже

$str = "Category A &gt; Subcategory A;Category A &gt; Subcategory B;Category B &gt; Subcategory C"; 
$str = preg_replace("/(?<!\&gt);/", "/", $str); 
echo $str; 
+0

Работает как шарм, я навсегда остаюсь в вашем долге – alexius