Например у меня есть строка " Значение='3' ", как мне любую цифру/ы или букву/ы, заменять например на "none", т.е. например есть у меня строка " Значение='3' Значение='0' Значение='8' Значение='1' ", мне надо значения 3, 0, 8, 1 заменить на none. Только я незнаю какие там могут быть значения, поэтому через str_replace у меня не получается, подскажите кто-нибудь как такое реализовывается?
Та, я никак не могу разобраться в регулярки, например вот тестирую функцию, почему вот этот код не работает? PHP: <?php $text = 'value="1d2fds"'; $html = preg_replace( '/(value=\")([a-zA-Z_0-9])(\")/', '<i>$1</i>', $text ); echo $html;?> Я хочу чтоб в этой ситуации вывело курсивом 1d2fds, но выводит просто value="1d2fds". Почему не работает, то?
tommyangelo, зачем? побывал ставить header("Content-type: text/html; charset=utf-8"); и header("Content-type: text/html; charset=windows-1251");
Ещё вопрос: А как сделать такое: PHP: $HTML = preg_replace( '/(?<=value=")([a-z0-9_]+?)(?=")/', 'val', $HTML ); Только чтобы при каждой замене заменялась на val_1, val_2 и т.д.?
MCTrane Наиболее оптимальное, если не требуется референций из preg_replace, с помощью preg_match_all выцепить варианты и поочередно их заменить уже с помощью str_replace
Ну preg_replace_callback, лямбда-функции в РНР есть. Вспомнил времена, когда их не было, а надо было сделать. Такой ппц конечно: пхп код в строке с экранированием, и ещё хрен отладишь. Кстати я ступил, сложно будет отследить вообще говоря инкремент замены. А preg_replace_callback - самое то. echo preg_replace_callback('/a/i', function($s){static $i = 1; return $i++;}, 'absaasklhdasdhsk');
Угу, в РНР 5.3 эта проблема решена. А если посмотреть - array_walk тот же. Как бы я не любил выносить функции, тем не менее оптимальным костылем был именно их набор во внешнем файле или классе. Кстати, вместо лямбда мне привычно их называть анонимными функциями.
Я по аналогии с яваскрипт, в яваскрипте юзаю их гиперактивно В пхп всего один раз пришлось. И то тогда РНР 5.3 не вышел Да и обратную совместимость придется засунуть поглубже.